data binding-将IN CODE简单数据绑定到DependencyProperty



我很抱歉,因为这太简单了。我知道问题已经得到了回答,但在30页左右的时间里,我还没有找到我试图解决的简单问题。

我还没有很好地练习SL,也没有尝试过一个简单的版本,尝试编写一个TextBox,它绑定到屏幕中的属性,并在Text更改时更新它,反之亦然(属性更改会传播到Text)。由于一些原因,我需要在codeehind中使用DependencyProperty和,而不是在XAML中使用INotifyPropertyChanged和。

我最近的尝试看起来像这样:

    public partial class MainPage : UserControl
{
    static MainPage()
    {
        TargetTextProperty = DependencyProperty.Register("TargetText", typeof(string), typeof(MainPage), new PropertyMetadata(new PropertyChangedCallback(TextChanged)));
    }
    public readonly static DependencyProperty TargetTextProperty;
    public string TargetText
    {
        get { return (string)GetValue(TargetTextProperty); }
        set { SetValue(TargetTextProperty, value); }
    }
    public MainPage()
    {
        InitializeComponent();
        TargetText = "testing";
        textBox1.DataContext = TargetText;
        Binding ResetBinding = new Binding("TargetText");
        ResetBinding.Mode = BindingMode.TwoWay;
        ResetBinding.Source = TargetText;
        textBox1.SetBinding(TextBox.TextProperty, ResetBinding);
    }
    private static void TextChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
    {
        MainPage pg = (MainPage)sender;
        pg.textBox1.Text = e.NewValue as string;
    }
}

有人看到我错过了什么吗?

谢谢,

John

以下内容应该足以设置所需的绑定:

textBox1.SetBinding(TextBox.TextProperty, new Binding() { Path = "TargetText", Source = this });

代码的问题是,您将Source和绑定Path都设置为TargetText属性,结果导致框架试图绑定到TargetText.TargetText,这显然是错误的。

相关内容

  • 没有找到相关文章

最新更新