在WPF中如何从代码中获取特定项的绑定?

这样的例子是:

textBox绑定到某些数据。 还有第二个文本框,它不绑定任何东西。 所以我想将文本框2绑定到第一个textBox绑定的相同数据。

换句话说,我不知道DependencyObject是否存储了对它的数据绑定的一些引用? 如果没有,找出特定对象的所有数据绑定的方法是什么?

试试这个

XAML

  

然后我们可以将textBox2的TextProperty与textBox1的绑定设置为后面的代码

 BindingExpression bindingExpression = textBox1.GetBindingExpression(TextBox.TextProperty); Binding parentBinding = bindingExpression.ParentBinding; textBox2.SetBinding(TextBox.TextProperty, parentBinding); 

您可以使用获取任何依赖项对象的绑定

 System.Windows.Data.BindingOperations.GetBinding(DependencyObject target,DependencyProperty dp) 

然后设置绑定

 System.Windows.FrameworkElement.SetBinding(DependencyProperty dp, string path) 

例如:

 var binding = BindingOperations.GetBinding(textBox1,TextBox.TextProperty); textBox2.SetBinding(TextBox.TextProperty, binding); 

您可以通过调用SetBinding方法在代码中执行此操作。

我知道已经有了一个公认的答案,但是有一些原因你只是不这样做吗?

   

现在无论textBox1绑定什么,即使该绑定发生更改, textBox2也是如此,不需要代码隐藏。

当然,我将这个基于XAML,并且您很可能需要从代码中为其他东西绑定绑定,但如果没有,上面的工作就可以了。