这是我的两难境地:
我的问题可能是“最佳实践”,但我的ViewModels是否应该相对独立于主视图?还是可以将所有设置数据向下传递到每个视图,即使每个视图只使用其中的一小部分?
我想进行设置,每个视图模型都将调用其自己的设置类/数据,但是如果我有一个窗口(大概是一个会更改设置的设置窗口),如何在更新后的视图中更新视图模型它们是类的不同实例?
过去我做过静态处理,但是这会导致紧密耦合,因此我试图避免这种情况。
答案 0 :(得分:0)
每个VM都有自己的数据,这通常被接受,因为将数据本地化到需要的地方是有意义的。但是,如果VM需要访问数据,则随着数据需求的增长,则需要提供该访问权限。如果您想设计一个适合您的访问系统。
我曾在使用应用实例上的静态变量使主VM或特定设置对象可用的系统上工作。因此,对所需数据的所有访问在整个应用程序中都是全球化的。
答案 1 :(得分:0)
我这样做的方法是创建一个设置类,该类负责对应用程序的所有设置进行序列化/反序列化。此类是静态的还是单例的,并提供对设置的全局线程安全访问。 此类还公开了一个事件“ SettingsUpdated”,只要更改设置(通常是通过调用serialize来保存更新的设置来触发),就会触发该事件。
然后,ViewModels可以简单地从此类中获取设置。而且,如果需要将设置的更改通知任何ViewModel,它们可以订阅“ SettingsUpdated”事件并读取更新的设置。