【发布时间】:2010-10-29 11:29:40
【问题描述】:
这个例子是:
文本框绑定到一些数据。还有第二个文本框不绑定到任何东西。所以我想将文本框 2 绑定到第一个文本框绑定的相同数据。
换句话说,我不知道 DependencyObject 是否存储了一些对其数据绑定的引用?如果不是,如何找出特定对象的所有数据绑定?
【问题讨论】:
标签: c# wpf data-binding
这个例子是:
文本框绑定到一些数据。还有第二个文本框不绑定到任何东西。所以我想将文本框 2 绑定到第一个文本框绑定的相同数据。
换句话说,我不知道 DependencyObject 是否存储了一些对其数据绑定的引用?如果不是,如何找出特定对象的所有数据绑定?
【问题讨论】:
标签: c# wpf data-binding
试试这个
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);
【讨论】:
TranslateTransform.XProperty等嵌套属性怎么办?
bindingExpression.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);
【讨论】:
我知道已经有一个被接受的答案,但是你不这样做有什么原因吗?
<TextBox Name="textBox1" Text="{Binding Text1}"/>
<TextBox Name="textBox2" Text="{Binding Text, ElementName=textBox1}"/>
现在无论textBox1 绑定到什么,即使该绑定发生变化,textBox2 也是如此,无需代码隐藏。
当然,我是基于所提供的 XAML,您很可能需要代码中的绑定本身来处理其他内容,但如果不需要,上述方法就可以了。
【讨论】:
您可以通过调用SetBinding 方法在代码中执行此操作。
【讨论】: