C# 在WPF中,如何从代码中获得特定项的绑定?

C# 在WPF中,如何从代码中获得特定项的绑定?,c#,wpf,data-binding,C#,Wpf,Data Binding,例如: 文本框绑定到某些数据。第二个文本框不绑定任何内容。所以我想将文本框2绑定到第一个文本框绑定的相同数据 换句话说,我不想知道DependencyObject是否存储了一些对其数据绑定的引用?如果没有,如何查找特定对象的所有数据绑定?您可以在代码中通过调用SetBinding方法来完成此操作。尝试此操作 Xaml 您可以使用 System.Windows.Data.BindingOperations.GetBinding(DependencyObject target,DependencyP

例如:

文本框绑定到某些数据。第二个文本框不绑定任何内容。所以我想将文本框2绑定到第一个文本框绑定的相同数据


换句话说,我不想知道DependencyObject是否存储了一些对其数据绑定的引用?如果没有,如何查找特定对象的所有数据绑定?

您可以在代码中通过调用
SetBinding
方法来完成此操作。

尝试此操作

Xaml


您可以使用

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,您可能需要代码中的绑定本身来实现其他功能,但如果不需要,上面的工作就可以了。

我知道如何设置绑定,我不知道如何获取对现有绑定的引用。我查看了DependencyObject,它不包含对绑定源的任何引用,因此,我想知道我可以从哪里获得此参考。请提供更多信息或示例如何实现此目标。上面@Felipe Faria的答案提供了一些示例。谢谢!这就是我一直在寻找的!如果我有嵌套属性,如
TranslateTransform.XProperty
,该怎么办?为什么它必须是
bindingExpression.ParentBinding
?我相信这比公认的答案更好,因为它不需要解构绑定表达式。在这里,您可以直接使用绑定本身。
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}"/>