以编程方式获取SL4中FrameworkElement的XAML

时间:2012-03-02 11:03:15

标签: silverlight xaml serialization silverlight-4.0 frameworkelement

我尝试使用DavidPoll's FrameworkElement序列化XamlSerializer,但我得到的结果与Silverlight Spy得到的(右)完全不同。例如,对于XamlSerializer,我获得了很多空标记(如MatrixTransform,ScrollViewer等),但不是我使用Silverlight Spy获得的ContentPresenter节点。知道如何在运行时获得一个干净的逻辑树吗?

更新:我有一个表单设计器程序,它将这些表单存储在数据库中,并在运行时根据存储在数据库中的信息创建对象(用户控件)。每个表单都由一些字段组成。在运行时,它以编程方式创建一个包含所有字段的UserControl。我想获得生成的XAML,就像我可以使用Silverlight Spy获得它一样。

Silverlight Spy

编辑:我不仅限于Silverlight环境,桌面应用程序的解决方案也是有效的。

1 个答案:

答案 0 :(得分:1)

简短的回答是:我认为你不能从Silverlight本身。遗憾。

一旦解析了XAML并将其加载到框架元素中,您就已经丢失了信息。例如,从内存对象中重新生成path并不重要,您将无法从Silverlight代码访问path元素的内部。

Silverlight Spy添加了一个简单的XamlSerializer无法生成的信息。 Silverlight Spy没有限制,因为它是一个“真正的”桌面应用程序,具有完全的操作系统访问权限,而您希望在Silverlight本身实际执行此操作,这是非常有限的沙箱环境(出于安全原因)。