我尝试使用DavidPoll's FrameworkElement
序列化XamlSerializer
,但我得到的结果与Silverlight Spy得到的(右)完全不同。例如,对于XamlSerializer,我获得了很多空标记(如MatrixTransform,ScrollViewer等),但不是我使用Silverlight Spy获得的ContentPresenter
节点。知道如何在运行时获得一个干净的逻辑树吗?
更新:我有一个表单设计器程序,它将这些表单存储在数据库中,并在运行时根据存储在数据库中的信息创建对象(用户控件)。每个表单都由一些字段组成。在运行时,它以编程方式创建一个包含所有字段的UserControl。我想获得生成的XAML,就像我可以使用Silverlight Spy获得它一样。
编辑:我不仅限于Silverlight环境,桌面应用程序的解决方案也是有效的。
答案 0 :(得分:1)
简短的回答是:我认为你不能从Silverlight本身。遗憾。
一旦解析了XAML并将其加载到框架元素中,您就已经丢失了信息。例如,从内存对象中重新生成path
并不重要,您将无法从Silverlight代码访问path元素的内部。
Silverlight Spy添加了一个简单的XamlSerializer无法生成的信息。 Silverlight Spy
没有限制,因为它是一个“真正的”桌面应用程序,具有完全的操作系统访问权限,而您希望在Silverlight本身实际执行此操作,这是非常有限的沙箱环境(出于安全原因)。