【发布时间】:2018-11-30 23:08:02
【问题描述】:
我正在开发一个桌面应用程序,作为我们客户的 IDE。此应用程序允许用户配置我们的可编程设备并将其集成到他们的产品中。
我正在寻找在这样的 MVVM 应用程序中管理持久数据的最佳实践/设计模式。有些数据可能在用户的项目之间重复使用,所以我想独立存储这些数据,而不是存储在一个大文件中。这种情况让我考虑 Visual Studio 处理这种情况的方式(一个指向构成项目的文件的 .csproj 文件)。
在考虑 Visual Studio 方法时,我可以轻松地为自己的数据实现这样的对象并将其序列化为 XML。然而,当谈到打开和操作这个项目文件指向的文件时,我真的很难找到一个优雅的解决方案。
例如,我打开我的项目文件,对其进行反序列化,然后我得到一个包含路径的对象,以及一些元数据,如 CompanyName、ProductName 等。下一步:打开/反序列化项目文件中指向的每个文件......但是这些对象应该放在哪里?您应该如何通知 ViewModels 模型已在外部更改?直觉告诉我,任何独特模型都应该只有一个实例,以避免副本不同步的问题,但这就是我所拥有的。
也许有一个可用的框架?
这可能有一篇很好的文章或 SO 答案,但我不知道如何搜索它。任何建议将不胜感激。
【问题讨论】:
-
至于“你应该如何通知 ViewModels 模型被外部更改了?”,答案是
INotifyPropertyChanged。 -
@BradleyUffner,为此,我的模型需要成为某个类的属性,并且该类必须实现
INotifyPropertyChanged(听起来像 ViewModel)。我的问题是,我的模型属于哪个类?提醒:我有 多个 ViewModel 绑定到给定模型,所以我看不出你的回答如何解决我的问题。
标签: c# mvvm config desktop-application