这样的例子是:
textBox绑定到某些数据。还有第二个文本框,它不绑定任何东西。所以我想将文本框2绑定到第一个文本框被绑定的相同数据。
换句话说,我不知道DependencyObject是否存储了对它的数据绑定的一些引用?如果没有,找出特定对象的所有数据绑定的方法是什么?
答案 0 :(得分:40)
试试这个
的Xaml
<TextBox Name="textBox1" Text="{Binding Text1}"/>
<TextBox Name="textBox2" Text="No Binding"/>
然后我们可以将textBox2的TextProperty的绑定设置为与textBox1相同,后面带有此代码
BindingExpression bindingExpression = textBox1.GetBindingExpression(TextBox.TextProperty);
Binding parentBinding = bindingExpression.ParentBinding;
textBox2.SetBinding(TextBox.TextProperty, parentBinding);
答案 1 :(得分:7)
您可以使用
获取任何依赖项对象的绑定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);
答案 2 :(得分:1)
我知道已经有一个可以接受的答案,但是出于某些原因您只是不这样做?
<TextBox Name="textBox1" Text="{Binding Text1}"/>
<TextBox Name="textBox2" Text="{Binding Text, ElementName=textBox1}"/>
现在,无论绑定到什么textBox1
,即使绑定发生更改,textBox2
也是如此,不需要任何代码隐藏。
当然,我是根据所提供的XAML来设计的,您很可能需要将代码本身绑定到其他东西,但是如果没有,上面的方法就可以了。
答案 3 :(得分:0)
您可以通过调用SetBinding
方法在代码中执行此操作。