2010-10-29 64 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); 
相關問題