C# 代码隐藏:检查控件的属性是否已绑定

C# 代码隐藏:检查控件的属性是否已绑定,c#,wpf,binding,code-behind,C#,Wpf,Binding,Code Behind,我正在寻找一种方法来签入代码隐藏,如果控件的属性已绑定,并且似乎无法找到正确的方法来执行此操作。我想我需要先获取FieldInfo(在通用方法中使用System.Windows.Controls.Control): …未找到PropertyDescriptor,但未找到FieldInfo FieldInfo gg = control.GetType().GetField("Visibility", BindingFlags.Public | BindingFlags.NonPublic | Bi

我正在寻找一种方法来签入代码隐藏,如果控件的属性已绑定,并且似乎无法找到正确的方法来执行此操作。我想我需要先获取FieldInfo(在通用方法中使用System.Windows.Controls.Control):

…未找到PropertyDescriptor,但未找到FieldInfo

FieldInfo gg = control.GetType().GetField("Visibility", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
FieldInfo gg1 = control.GetType().GetField("VisibilityProperty", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
FieldInfo gg2 = typeof(Control).GetField("Visibility", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
FieldInfo gg3 = typeof(Control).GetField("VisibilityProperty", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
…全部返回null作为FieldInfo。找到FieldInfo后,我想检查该值是否已通过执行以下操作绑定:

DependencyProperty dp = (DependencyProperty)field.GetValue(control);
if (control.GetBindingExpression(dp) == null) ...

有什么想法吗?

您可以尝试使用
BindingOperations.GetBinding
获取绑定对象。像

// textBox3 is an instance of a TextBox
// the TextProperty is the data-bound dependency property
Binding myBinding = BindingOperations.GetBinding(textBox3, TextBox.TextProperty);
参考

谢谢:-)我使用了一个通用方法,所以我使用了这个方法:Binding bindingVisibility=BindingOperations.GetBinding(control,control.VisibilityProperty);
// textBox3 is an instance of a TextBox
// the TextProperty is the data-bound dependency property
Binding myBinding = BindingOperations.GetBinding(textBox3, TextBox.TextProperty);