WPF:查找绑定域对象属性

时间:2010-12-10 17:24:16

标签: wpf data-binding binding

是否有一种简单的方法可以确定域对象中的属性是否绑定到WPF元素,如果是,是哪个元素和属性?

例如,假设我有一个带有TextBox的UserControl,我将控件的“Text”属性绑定到我的域对象的“Description”属性。仅给出域对象属性的名称(“描述”),如何检索该属性的BindingExpression?

1 个答案:

答案 0 :(得分:1)

不,没有简单的方法可以做到这一点。绑定不起作用,您的属性可以绑定到多个元素的多个依赖属性,并且不知道它。您基本上必须遍历VisualTree,枚举每个FrameworkElement的依赖项属性,获取BindingExpressions并比较Binding的Path以查看它是否与您要搜索的属性名称匹配。除此之外,您还必须将DataContext与对象进行比较。我仍然可以想到许多情况会失败,例如路径并不总是在绑定中使用,您可以直接使用DataContext。

无论如何,这是一个link,其实现实际上是这样做的。我尝试了它并且它可以工作,但只需要2秒就可以完成一次只包含4列10行的DataGrid搜索。虽然它没有进行DataContext检查,但我将其添加到我的测试应用程序中,但我不会发布代码,因为我认为你不会使用它。如果你想要它,请告诉我,我会发布它。