[英]In WPF how to get binding of a specific item from the code?
這方面的例子是:
textBox綁定到某些數據。 還有第二個文本框,它不綁定任何東西。 所以我想將文本框2綁定到第一個textBox綁定的相同數據。
換句話說,我不知道DependencyObject是否存儲了對它的數據綁定的一些引用? 如果沒有,找出特定對象的所有數據綁定的方法是什么?
嘗試這個
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);
您可以使用獲取任何依賴項對象的綁定
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
方法在代碼中執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.