.net Silverlight-在给定的视觉应力中获取元素的所有绑定信息?

.net Silverlight-在给定的视觉应力中获取元素的所有绑定信息?,.net,wpf,visual-studio,silverlight,xaml,.net,Wpf,Visual Studio,Silverlight,Xaml,出于预览目的,我们正在运行时为元素加载一些xaml(XamlReader.Load)。更不用说,属性/绑定是未知的,因为它们可以在我们正在加载的元素/控件之间变化 当我们加载控件进行预览时,运行时视图模型上下文不可用——加载元素后,我们的想法是获取绑定信息,在运行时使用这些属性创建一个类型,将其指定为加载控件的数据上下文 我们将使用AssemblyBuilder/ModuleBuilder/TypeBuilder在运行时生成类型。话虽如此,我们需要遍历可视化树来识别所涉及的绑定,创建绑定路径列表

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

当我们加载控件进行预览时,运行时视图模型上下文不可用——加载元素后,我们的想法是获取绑定信息,在运行时使用这些属性创建一个类型,将其指定为加载控件的数据上下文

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

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


谢谢

为什么不浏览Silverlight可视化树,并为每个元素调用GetBindingExpression(),以获得所有DPs

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

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


一个更可能的替代方法是将XAML加载到XDocument中,然后可以使用一些LINQ来发现所有以
“{Binding”
开头的属性。但是,是的,然后将使用正则表达式来解析属性值(除非您真的想做一些疯狂的事情,我甚至不会提及).

我经常在silverlight问题中看到wpf标记,这个问题真的有wpf组件吗?一个开发人员的“简单”是另一个开发人员的“yikes!”。