如何制作UIElement的深层副本?

| 因此,我有一个服务于Silverlight应用程序的打印组件。该程序中的其他模块具有向打印组件发送信号并将其传递给
UIElement
的能力,然后打印组件将其绘制到屏幕上。一切都很好。当我尝试操纵UI元素以更好地设置其格式以适合用户选择的纸张大小或具有这种效果的任何内容时,就会出现问题。似乎传入的UI元素通常与屏幕上的UI元素完全相同,并且screen元素会更改自身以匹配我所做的“仅打印”更改。现在,我可以手动保存以前的值,进行更改并恢复以前的值,但是如果我有办法在给定UI元素的情况下进行复制,这将更容易/更可靠/更高效/更灵活。元素,然后自由操作,而不必担心原始UI元素的更改或状态。如何以编程方式复制UI元素的实例,以便使另一个实例具有相同的视觉外观?     
已邀请:
我知道您可以尝试2种方法: 将对象保存到xaml字符串,然后从中重新创建它。 (
XamlWriter.Save
XamlReader.Parse
) 使用序列化器将对象保存到内存流中,然后从中重新创建-可能不是所有对象都标记为可序列化的,因此另一个选项可能是一个可以使用的选项。 看起来可能有点多-但是创建深拷贝的方法并不多-而且我不知道任何标准的c#方法。     
如果您已经遇到了手动保存以前的值的麻烦,似乎您已经接近于简单地创建对象的新实例并设置其属性。 如果UI元素已标记为可序列化,则可以很容易地克隆对象。     

要回复问题请先登录注册