我一直认为,在视图模型中使用messageBox时,使用MVVM模式时,会显示一个对话框,这不是一个好的解决方案。
显示我认为另一个解决方案是创建一个视图和一个视图模型,该模型在我的主视图模型中创建并与视图和对话框的视图模型相关联。另外,我需要创建一个从主视图模型传递到对话框视图模型的类,该模型作为对话框的结果返回。
但真的第二种方式更好吗?有什么区别?因为在这两种情况下我都需要等到对话结果。
或者两种解决方案都是不好的选择?
感谢。
答案 0 :(得分:2)
在我看来,为MessageBox创建一个ViewModel是过度的。我将为ViewModels创建一个带有ShowMessage事件的接口,以及一个带有附加属性的附加行为,该属性可以绑定到ViewModel,为ShowMessage事件注册一个侦听器,并在引发事件时打开一个MessageBox。消息框的结果可以通过EventArgs传递。
这里的区别在于您可以将接口和附加行为封装在可重用组件中,并且您需要ViewModel中的最少代码才能使用它。