开发者

TextBox Binding Lost when typing directly using the Keyboard

I Have a usercontrol that is being updated by another usercontrol via provided ValueProperty (see code Window.XAML Binding below) When my other usercontrol's property is being updated, the textbox is updated as well via Value Binding.

But When I directly type to the usercontrols textbox then use my other user control again. The textbox is never updated again. It seems that the ValueProperty of my TextBox UserControl's was overwritten. I am assuming that the Text={Binding...} was lost and overwritten when I directly typed in the TextBox.

//Window.XAML
<veraControls:veraCommandPanel Name="commandCTRL" Value="{Binding ElementName=MyKeyPad, Path=Value}"  HorizontalAlignment="Right" Width="360.057" Margin="0,266,-开发者_如何学Python92.834,0" FontSize="42" FontFamily="lcdD" Foreground="LimeGreen" Height="54.901" VerticalAlignment="Top" />

//Here is my userControl
<UserControl x:Name="PART_command" x:Class="Vera.WPFControls.veraCommandPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="Auto" Width="300"
xmlns:local="clr-namespace:Vera.WPFControls">
<StackPanel>
    <StackPanel.Resources>
        <Style x:Name="PART_veraCommand" TargetType="{x:Type local:veraCommandPanel}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type local:veraCommandPanel}">
                        <Border Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </StackPanel.Resources>
    <TextBox Height="55" Name="PART_txtCommand"  Text="{Binding ElementName=PART_command, Path=Value}" VerticalAlignment="Top" />
</StackPanel>

//TextBox UserControl's Code Behind
namespace Vera.WPFControls
{
/// <summary>
/// Interaction logic for veraCommandPanel.xaml
/// </summary>
public partial class veraCommandPanel : UserControl, INotifyPropertyChanged
{

    public veraCommandPanel()
    {
       InitializeComponent();
       this.DataContext = this;
    }


    public event PropertyChangedEventHandler PropertyChanged;
    protected void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }

    public static  DependencyProperty ValueProperty =
           DependencyProperty.Register("Value", typeof(string), typeof(veraCommandPanel));

    //, new UIPropertyMetadata(false, new PropertyChangedCallback(PropChanged)));

    public string Value
    {
        get
        {
            return (string)GetValue(ValueProperty);
        }
        set
        {
            SetValue(ValueProperty, value);

    }

}

}


Try TwoWay binding, like this:

Text="{Binding ElementName=PART_command, Path=Value, Mode=TwoWay}"
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜