1

我正在开发一个图表工具,我将控件拖放到图表表面,就像 VS 或 visio 或绘画一样。

放置在表面上的每个控件/元素将在右键单击时显示上下文菜单“属性”。“属性”对话框将显示一组与每个元素/控件相关的数据。

我的问题是如何最好地存储/加载这些非 UI 数据,附加到表面上的每个元素/控件。

例如,我在设计模式下创建元素 LED1、断路器 1、连接器 1。我将为
每个元素存储不同的数据集。

存储逻辑会是这样

   for all elements on diagram
    1. input element id,element type.
    2. store data for that element ID.  

当我创建的图表作为应用程序运行时,加载程序必须从存储中为每个元素检索适当的数据。

加载器逻辑可能是这样的

对于图表上的所有元素

  1. 检测元素id和元素类型
  2. 获取上述 id 的数据。

我认为 xml 的资源。但我的经理似乎并不热情。

我想知道最有经验/最熟练的 wpf 开发人员将如何解决这个问题。

4

3 回答 3

1

我可能不完全理解你的问题。但是我们以自定义二进制格式存储我们的业务数据,这基本上只是将我们的业务数据树的属性值转储到数据库中。根据您的要求,您需要确保处理文件格式(不同版本)的更改并正确处理交叉引用。每个对象都自己转储,第二遍确保解决了交叉引用。

除此之外,我会让它尽可能简单:

每种类型的图表元素的模型类,它们本身仅存储业务相关数据(我会将图表应用程序中的位置和大小视为业务数据)。这些模型可以被序列化。对这些模型进行操作的管理器类,包括撤消重做、视图模型创建等。以及包装这些模型并存储其他内容的视图模型,例如命令、ui 信息(被选中、展开等)。

对于视图,我强烈建议使用虚拟化画布创建自定义 ItemsControl。

于 2013-03-14T12:20:33.517 回答
0

我认为这取决于规模。如果您有数千个对象,您需要保存/加载哪个状态,您最好设置一个数据库,您将在其中存储数据。如果它只有几十个对象 - XmlSerialization 是最明显的选择。

于 2013-03-14T12:19:02.640 回答
0

我不认为 XML 是一个坏方法。事实上,这是 Office 子元素的存储方式。看看微软的XPS 打包格式和 API。( MSDN )

于 2013-03-14T12:21:07.757 回答