2010-10-29 53 views
13

这样做的例子是:在WPF中如何从代码中获取特定项目的绑定?

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

换句话说,我wan't知道如果DependencyObject的卖场一定的参考它的数据绑定?如果不是,找出特定对象的所有数据绑定的方法是什么?

回答

31

试试这个

的XAML

<TextBox Name="textBox1" Text="{Binding Text1}"/> 
<TextBox Name="textBox2" Text="No Binding"/> 

然后我们就可以使用此代码设置TextProperty的结合为TextBox2中,以相同的textBox1的背后

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

谢谢!这就是我一直在寻找的! – Vitalij 2010-10-29 11:38:33

+0

如果我有像'TranslateTransform.XProperty'这样的嵌套特性,该怎么办? – pt12lol 2015-11-29 08:44:40

+1

为什么它必须是'bindingExpression.ParentBinding'? – j00hi 2017-07-25 10:09:18

0

您可以通过调用SetBinding方法的代码做到这一点。

+0

我知道如何设置绑定我不知道如何让参考现有绑定。 – Vitalij 2010-10-29 11:34:03

+0

我都对着DependencyObject的,它不包含绑定源的任何引用,所以我想知道在哪里可以得到这个参考。 – Vitalij 2010-10-29 11:34:55

+0

GetBinding():) – 2010-10-29 11:55:44

3

你可以得到的结合使用

System.Windows.Data.BindingOperations.GetBinding(DependencyObject target,DependencyProperty dp) 
任何依赖性对象的210

然后设置与

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

绑定例如:

var binding = BindingOperations.GetBinding(textBox1,TextBox.TextProperty); 
textBox2.SetBinding(TextBox.TextProperty, binding); 
相关问题