如何在XAML中查找和访问绑定到对象的元素?
编辑:假设我的EmployeeViewModel
中有一个分配给EmployeeView
的DataContext
的EmployeeViewModel
和一个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中(因此你可能会受到更多的限制)。
似乎有几种可能的方法可以做你想做的事:
- 反射
- MarkupObject/MarkupWriter
- TypeDescriptor+DependencyPropertyDescriptor
- 自定义绑定标记扩展
看看这个链接。
- 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