如何保存和加载对象

时间:2014-07-01 09:19:09

标签: c# wpf winforms

目前,我正在使用WPF。我有两个窗口I-e window1和window2。 window1有一个导航到window2的按钮; window2还有一个返回window1的按钮。 window2有许多控件也是用户控件。这种情况是每当我将window1导航到window2时,由于某些原因我必须创建window2的新对象。我知道单身模式但不适用于此。

现在,在window2的unload事件中,我将window2的对象保存在一个静态类中(我将“this”保存到静态类中)。当用户再次在这里导航时,我想加载保存的对象而不是构造新对象。

是否有任何方法可以在当前对象中加载已构建的对象?我在构造函数或加载的某处我可以加载保存的对象吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

因为它被标记为wpf,所以你绝对应该看看mvvm。除了在表单之间传递数据之外,您将拥有两个ViewModel(对于每个表单)来保存与UI数据相关联的所有内容,而一些Model来保留其余部分。这些视图模型(和模型)将在关闭/打开表单之间保持不变,意味着不需要传递任何内容或保存/加载。

如果您需要实际保存数据(例如,不同的状态集或数据以便在退出/启动应用程序中继续存在),那么请查看序列化。我最喜欢的是XmlSerializer / XmlDeserializer,因为它易于控制,易于更改(编辑数据)并且易于支持版本控制。有几十个教程,只需搜索“c#serialization”,可选单词“xml”,或“binary”甚至“protobuf”。