在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,并且您很可能需要从代码中为其他东西绑定绑定,但如果没有,上面的工作就可以了。