我有一个WPF应用程序,一直在尝试以MVVM风格编写。如果抛出异常(比如打开文档时),我希望显示一个MessageBox。虽然很容易实现,但我的代码感觉不太对,因为MessageBox.Show调用在ModelView中。我认为这种事情应该放在View中,但我不应该在View中放置代码。
因此,问题实际上可以归结为在MVVM中显示MessageBox的建议方式是什么?
因此,问题实际上可以归结为在MVVM中显示MessageBox的建议方式是什么?
使用服务:
public void SomeMethodInYourViewModel()
{
try
{
DoSomethingDangerous();
}
catch (Exception ex)
{
ServiceLocator.Resolve<IMessageService>().ShowMessage(ex.Message);
}
}
您现在已将虚拟机从消息呈现中解耦。您甚至可以决定不再使用标准(丑陋的)消息框,而这不会影响您的虚拟机。