首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Silverlight -获取给定视觉树中元素的所有绑定信息?

Silverlight -获取给定视觉树中元素的所有绑定信息?
EN

Stack Overflow用户
提问于 2009-12-24 20:02:55
回答 2查看 272关注 0票数 1

出于预览的目的,我们在运行时(XamlReader.Load)为一个元素加载了一些xaml。不用说,属性/绑定是未知的,因为它们可以在我们加载的元素/控件中变化。

当我们加载要预览的控件时,运行时视图模型上下文不可用-在加载元素之后,想法是获取绑定信息,在运行时使用这些属性创建一个类型,以分配与加载的控件的数据上下文相同的内容。

我们将使用AssemblyBuilder/ModuleBuilder/TypeBuilder在运行时构建一个类型。话虽如此,我们需要遍历可视化树来识别所涉及的绑定,以创建绑定路径列表。

显然,一种方法是使用regex直接解析xaml并构建此列表。我只想知道是否存在一种方法,以便我可以从可视化树本身获取绑定和相关路径?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-24 20:31:54

为什么不直接遍历Silverlight可视化树,并为每个元素调用GetBindingExpression()来获取它的所有DP呢?

票数 0
EN

Stack Overflow用户

发布于 2009-12-24 20:35:02

您不能轻易地从可视化树中枚举绑定本身。主要的问题是,FrameworkElement不提供枚举已使用SetBinding方法应用的绑定的方法。

为了发现FrameworkElement上设置的绑定,您需要发现可能已设置或尚未设置的可能DependencyProperties的集合,然后尝试使用GetBindingExpression检索每个绑定。要发现DependencyProperties集,需要在FrameworkElement的实际类型上编写一些反射代码。

一种更可能的替代方法是将XAML加载到XDocument中,然后您可以使用一些LINQ来发现所有以"{Binding"开头的属性。但是,是的,这将是RegEx解析属性值的情况(除非您想做一些我甚至不会提及的非常疯狂的事情)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1958095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档