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