Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 序列化可视树_C#_.net_Wpf_Visual Studio_Serialization - Fatal编程技术网

C# 序列化可视树

C# 序列化可视树,c#,.net,wpf,visual-studio,serialization,C#,.net,Wpf,Visual Studio,Serialization,我正在寻找一种从对象序列化/保存可视化树的方法。即使不是所有(自定义)控件都可用,也可以在其他应用程序中重新加载/显示此树。结果应该是比例可伸缩(矢量图)和独立控制。到目前为止,我为我的问题找到的最佳解决方案是XamlWriter.Save(),但这会生成包含所有依赖项的xaml。 Xps几乎就是我想要的,但是没有xpsviewer是否可以显示它们?正如@HighScore所说,与其考虑如何序列化UI对象,不如考虑如何序列化数据 设计数据模型并将其序列化为您喜欢的任何格式。我更喜欢JSON,因为

我正在寻找一种从对象序列化/保存可视化树的方法。即使不是所有(自定义)控件都可用,也可以在其他应用程序中重新加载/显示此树。结果应该是比例可伸缩(矢量图)和独立控制。到目前为止,我为我的问题找到的最佳解决方案是XamlWriter.Save(),但这会生成包含所有依赖项的xaml。
Xps几乎就是我想要的,但是没有xpsviewer是否可以显示它们?

正如@HighScore所说,与其考虑如何序列化UI对象,不如考虑如何序列化数据

设计数据模型并将其序列化为您喜欢的任何格式。我更喜欢JSON,因为它轻量级、简单,并且在任何地方都受支持


然后,只需在需要的地方使用数据,例如重新创建树。

您不会“序列化UI”,因为。请尝试序列化数据。我将存储可视信息(如矢量图形)。应用程序A将有大量的自定义控件,而应用程序B应该对这些控件一无所知,因此我必须存储视觉信息(而不是0,0按钮->我将存储所有矩形、渐变笔刷和边框)。我要寻找的是一个概念,从控件遍历视觉树。我不会序列化Ui,我会序列化视觉(矩形、圆形、文本、彩色框等)。使用“应用程序a”,我会创建一个设计师,用xaml设计(例如)一个图像/绘图(即使使用一些特殊的自定义控件),然后存储“矢量图像”以固定比率,然后在不知道特殊自定义控件的情况下,在“应用程序B”中显示此项。该技术应类似于xps(仅允许基本类型:多边形、线条、字形),并且自定义控件当前状态的任何可视表示应序列化。当我仅存储数据时,B必须知道这些特殊控件