WPF MVVM:应该在'ViewModel'中避免使用WPF名称空间吗?

本文关键字:WPF 空间 ViewModel MVVM | 更新日期: 2023-09-27 18:02:33

如果我们把解决方案分成三个项目:

视图

视图模型

模型

我们是否应该避免引用任何与'ViewModel'中的'View'处理的程序集,例如System.Windows.Controls,或者在'ViewModel'项目中使用WPF名称空间System.Windows(如Visibility)的属性是可以接受的?我担心的是,一旦我在"ViewModel"中引用了WPF程序集,就很容易有人在路上滑倒,并在视图模型代码中弹出对话框。

WPF MVVM:应该在'ViewModel'中避免使用WPF名称空间吗?

从ViewModel中完全避免使用WPF名称空间和程序集通常是个好主意。ViewModel不应该关心View,也不应该绑定到特定的View框架。

例如,如果这样做正确,同样的ViewModel可能会在WPF和Windows Phone上工作。如果您引用WPF程序集,这将会中断。

在您的情况下,避免引用Visibility的方法是只使用布尔值,但随后在XAML中使用IValueConverterbool(或其他ViewModel和正常框架类型)转换到您正在使用的所需视图技术(Visibility.Visible等)。