我正在使用MVVM设计模式编写WPF应用程序。我想知道最好的(读“MVVM投诉”)这样做的方式。另请注意,我的视图模型中的所有代码都不在UI线程上运行。目前,我正在使用App.Current.Dispatcher
访问VM中的Dispatcher,然后在其上调用MessageBox.Show()
。
答案 0 :(得分: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调用消息框。