查找绑定到对象的XAML框架元素



如何在XAML中查找和访问绑定到对象的元素?

编辑:假设我的EmployeeViewModel中有一个分配给EmployeeViewDataContextEmployeeViewModel和一个EmployeeModel,我想知道我的模型的哪些属性绑定到View的框架元素(控件),我还想访问绑定到我的模型属性的每个控件。

更新:鉴于SaberAmani澄清的问题,他正试图将验证添加到他的模型中,并显示验证摘要。。请参阅下面的链接。

http://msdn.microsoft.com/en-us/magazine/ff714593.aspx

http://codeblitz.wordpress.com/2009/05/12/wpf-validation-summary-control/

http://wpfvalidation.codeplex.com/

http://f10andf11.blogspot.co.uk/2012/02/wpf-validation-summary-control.html


供想要发现绑定的人参考:

你没有提到你的XAML是在WPF、Silverlight、Metro还是Phone7中(因此你可能会受到更多的限制)。

似乎有几种可能的方法可以做你想做的事:

  1. 反射
  2. MarkupObject/MarkupWriter
  3. TypeDescriptor+DependencyPropertyDescriptor
  4. 自定义绑定标记扩展

看看这个链接。

  • http://blog.spencen.com/2008/05/02/how-to-get-a-list-of-bindings-in-wpf.aspx

他使用反思,并认为这是经典的方法……但也提到MarkupWriter是另一种可能性。注意:反射方法不会发现可能具有绑定的附加属性。

以下是一些使用MarkupWriter的链接。。。这将允许您发现附加的属性。

  • http://www.codeproject.com/Articles/21139/An-XAML-Serializer-Preserving-Bindings

  • http://blogs.msdn.com/b/marlat/archive/2009/05/24/getbindingexpression-a-good-way-to-iterate-over-all-dependency-properties-in-visual-tree-in-silverlight-3.aspx

相关链接:

  • 从WPF窗口检索所有数据绑定

  • 正在获取对象的所有依赖项/附加属性的列表http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/580234cb-e870-4af1-9a91-3e3ba118c89c

您可以使用反射在属性中循环,并在每个属性上使用FrameworkElement.GetBindingExpression来为给定的Framework元素构建其所有绑定。

http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.getbindingexpression

最新更新