MVVM-我如何在主视图模型(和其他视图模型)和我的设置对话框之间传播设置?

Jus*_*tin 5 wpf settings mvvm mvvm-light

我正在为我的应用程序构建一个设置对话框,现在所有设置都与主视图模型上的设置相对应,但是当我添加更多视图和视图模型时,有些可能没有.

我需要知道将当前设置加载到设置对话框中的最佳做法是什么,然后如果用户单击"确定",则将设置保存到相应的视图模型.

我不会使用Properties.Settings.Default系统来存储设置,因为我希望我的应用程序尽可能便携,这会将用户范围设置存储在目录中: C:\Users\ username \Local Settings\Application Data\ ApplicationName 而不是在我的应用程序目录中.

如果它有任何区别我使用Laurent Bugnion的MVVM Light Toolkit.

Cod*_*sel 3

使用工具包的 Messenger 来实现怎么样?

当在设置 ViewModel 中进行更改时,您只需通知任何感兴趣的人:

Messenger.Send<Settings>(changedSettings);
Run Code Online (Sandbox Code Playgroud)

所有需要知道设置是否已更改的 Viewmodel 都会注册到该消息:

Messenger.Register<Settings>(this, delegate(Settings changedSettings){loadSettings(changedSettings);});
Run Code Online (Sandbox Code Playgroud)

请阅读此处:Mvvm light Messenger或查看类似的帖子mvvm-light-how-to-access-property-in-other-view-model