0

我的目标是让 ViewModel 告诉 View 呈现一个 MessageBox 并向用户提问。

我不希望 ViewModel 对特定于 Windows 的代码有任何引用。

我花时间下载并安装 MVVM Light Toolkit。现在我发现,即使使用工具包,我的 ViewModel 也必须引用 System.Windows,才能解决 MessageBoxButton 和 MessageBoxResult 之类的问题。

当您最终得到一个引用 System.Windows 的 ViewModel 时,为什么还要进行所有这些额外的工作?我不妨直接从 ViewModel 调用 MessageBox.Show()。基本上我没有通过使用 MVVM 工具包节省任何东西,所以我只是不明白我为什么要使用它。

有人可以向我解释一下,如果我仍然必须在我的 ViewModel 中引用 System.Windows,为什么还要这样做?

谢谢,休

4

3 回答 3

0

mvvm light 工具包可帮助您实现 mvvm 模式。mvvm light 工具包还具有可混合的非常好的优点(为您进行了一些调整,因此您可以使用 Expression Blend 非常轻松地进行设计)。Mvvm 模式也确实有助于(正如其他人所说)测试您的应用程序,因为很难测试视图,但测试 viewModel 要容易得多。

如果您想知道为什么要进行这项工作并使用 mvvm light,我建议您查看此相关答案

希望它有所帮助,祝你好运!

于 2011-08-09T21:13:11.350 回答
0

它不会破坏工具包的目的。该工具包提供了一个轻量级的框架,用于将视图与模型分离,这对单元测试绝对有帮助。

他们重用了枚举,因此不必重写它们。重用特定于 UI 的枚举确实看起来有点奇怪,但至少它们不是事件处理程序和事件参数。

最后,MVVM 使用命令,需要实现ICommand接口。该界面位于 PresentationCore 中,并且更加特定于 UI :)

总体而言,目的不是删除引用,而是尽可能不使用这些引用,并且枚举绝对不会破坏模式。

于 2011-03-02T02:04:33.100 回答
0

使用 MessageBox 类时,需要引用 System.Windows.Forms.dll。MVVM-Light 不需要此参考。

于 2010-07-01T07:27:45.077 回答