1

我正在使用 MVVM 设计模式编写 WPF 应用程序。我想知道这样做的最佳方法(阅读“MVVM 投诉”)。另请注意,我的视图模型中的所有代码都不会在 UI 线程上运行。目前我正在使用 VM 中的 Dispatcher,App.Current.Dispatcher然后调用MessageBox.Show()它。

4

1 回答 1

8

您应该创建以下服务

IMessageBoxService \\ Exposes Show(string Title, String Caption)
IDispatcherService \\ Exposes Dispatch(Action action), Register(Dispatcher)

然后创建 WPF 特定的实现为

MessageBoxService (or WPFMessageBoxService if you wish)
DispatcherService

将这些注册到应用程序中使用的 DI/IoC 容器(如 Unity/MEF/Windsor)

对于依赖的视图模型,通过构造函数传递服务,如

public MainViewModel(IMessageBoxService messageBoxService, IDispatcherService dispatcherService)

现在您可以使用 messageBoxService/dispatcherService 通过 Dispatcher 上的 ViewModel 调用消息框。

消息框示例

于 2013-10-23T03:14:28.193 回答