我正在使用 MVVM Light 开发一个 MVVM 应用程序,总的来说,我发现它非常好用。但是,我有一个烦人的问题,希望有人能提供帮助。
我正在使用DialogMessage
从 VM 向视图发送实例来显示对话框。结果通过回调发送回我的虚拟机,到目前为止一切都很好。
但是,对话框的结果(确定、是、否、取消等)作为enum System.Windows.MessageBoxResult
. 对我来说,这似乎违背了 View/ViewModel 的分离,MessageBoxResult
显然是 UI 中的一种类型,因此 VM 不应依赖于此或System.Windows
命名空间中的任何内容。
我正在寻找的是以某种方式使用DialogMessage
替代回调,例如,Action<UserResult>;
而不是Action<System.Windows.MessageBoxResult>;
,UserResult
我定义的类型代表用户选择而不依赖于MessageBoxResult
.
这是可能的,还是我过于严格地希望将 UI 概念排除在 VM 之外?