在WPF中如何从代码中获取特定项的绑定?

Vit*_*lij 22 c# data-binding wpf

这方面的例子是:

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

换句话说,我不知道DependencyObject是否存储了对它的数据绑定的一些引用?如果没有,找出特定对象的所有数据绑定的方法是什么?

Fre*_*lad 43

试试这个

XAML

<TextBox Name="textBox1" Text="{Binding Text1}"/>
<TextBox Name="textBox2" Text="No Binding"/>
Run Code Online (Sandbox Code Playgroud)

然后我们可以将textBox2的TextProperty与textBox1的绑定设置为后面的代码

BindingExpression bindingExpression = textBox1.GetBindingExpression(TextBox.TextProperty);
Binding parentBinding = bindingExpression.ParentBinding;
textBox2.SetBinding(TextBox.TextProperty, parentBinding);
Run Code Online (Sandbox Code Playgroud)

  • 为什么它必须是`bindingExpression.ParentBinding`? (3认同)

小智 8

您可以使用获取任何依赖项对象的绑定

System.Windows.Data.BindingOperations.GetBinding(DependencyObject target,DependencyProperty dp)
Run Code Online (Sandbox Code Playgroud)

然后设置绑定

System.Windows.FrameworkElement.SetBinding(DependencyProperty dp, string path)
Run Code Online (Sandbox Code Playgroud)

例如:

var binding = BindingOperations.GetBinding(textBox1,TextBox.TextProperty);
textBox2.SetBinding(TextBox.TextProperty, binding);
Run Code Online (Sandbox Code Playgroud)