2013-03-14 65 views
1

我正在开发一个图表工具,将控件拖放到图表表面,就像VS或visio或paint一样。在屏幕上存储各种UI元素的数据的最佳方法

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

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

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

存储逻辑将是这样

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

当我所创建的图,运行作为一个应用程序,相应的数据具有用于每个从存储这些元件由加载程序被检索。

装载机逻辑可以是这样的

所有元素上图

  1. 检测元件的ID和元件类型
  2. 获得上述的id数据。

我以为XML的资源。但我的经理似乎并不热心。

我想知道最有经验/精通的wpf开发人员将如何去做这件事。

+0

一个想法是,如果你能设法抽象出序列化逻辑,那么你以后可以很容易地切换你存储的格式。在我们项目的一个非常旧的迭代中,我们可以用一行xml和二进制序列化之间的代码。但是,这些灵活性当然是有代价的。 – dowhilefor 2013-03-14 12:22:59

回答

0

我认为这取决于规模。如果你有成千上万的对象,你需要保存/加载哪个状态,最好建立一个数据库,在那里你将存储你的数据。如果它只有几十个对象--XmlSerialization是最明显的选择。

1

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

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

模型类为每种类型的图表元素,它本身只是存储业务相关的数据(我会考虑以图表的应用业务的位置和大小数据)。这些模型可以做成Serializable。 管理员类操作这些模型,撤销重做,查看模型创建等 和包装这些模型和存储额外的东西,如命令,用户界面信息(选择,展开等)的视图模型。

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

0

我不认为XML是一个不好的方法。如果事实上这是Office子元素存储的方式。看看微软的XPS Packaging格式和API。(MSDN