我正在开发一个图表工具,在这个工具中,我会将控件拖放到图表表面,就像VS、visio或paint一样。
每个放置在表面上的控件/元素,在右键单击时将显示一个上下文菜单"properties“。"properties“对话框将显示与每个元素/控件相关的一组数据。
我的问题是如何最好地存储/加载这个附加到表面上的每个元素/控件的非UI数据。
例如,我在设计模式中创建元素LED1、断路器1、连接器1。
他们每个人都有不同的数据集。
存储逻辑将如下所示
for all elements on diagram
1. input element id,element type.
2. store data for that element ID. 当我创建的图表作为应用程序运行时,必须由加载程序从存储中为每个元素检索适当的数据。
加载程序逻辑可能是这样的
用于图表上的所有元素
我认为xml是一种资源。但我的经理似乎并不热心。
我想知道最有经验/最熟练的wpf开发人员将如何做到这一点。
发布于 2013-03-14 12:20:33
我可能不完全理解你的问题。但是我们以自定义二进制格式存储业务数据,这基本上只是业务数据树的属性值转储到数据库中。根据您的需求,您需要确保处理文件格式的更改(不同版本),并正确处理交叉引用。每个对象都是单独转储的,第二次遍历确保交叉引用被解析。
此外,我还会尽可能轻松地:
每种类型的图表元素的模型类,它本身只存储与业务相关的数据(我会将图表应用程序中的位置和大小作为业务数据考虑)。这些模型可以被系列化。对这些模型进行操作的管理类,包括撤销重做、查看模型创建等,以及包装这些模型并存储命令、ui信息(被选中、扩展等)的视图模型。
对于视图,我强烈建议创建一个带有虚拟化画布的自定义ItemsControl。
发布于 2013-03-14 12:19:02
我认为这取决于规模。如果有数千个对象,需要保存/加载这些对象,那么最好设置一个数据库,在那里存储数据。如果它只是几十个对象-- XmlSerialization是最明显的选择。
发布于 2013-03-14 12:21:07
我不认为XML是一种糟糕的方式。事实上,这就是Office子元素的存储方式。看看微软的XPS封装格式和API。(MSDN)
https://stackoverflow.com/questions/15408688
复制相似问题