簡體   English   中英

在WPF中如何從代碼中獲取特定項的綁定?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM