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程序集,就很容易有人在路上滑倒,并在视图模型代码中弹出对话框。
从ViewModel中完全避免使用WPF名称空间和程序集通常是个好主意。ViewModel不应该关心View,也不应该绑定到特定的View框架。
例如,如果这样做正确,同样的ViewModel可能会在WPF和Windows Phone上工作。如果您引用WPF程序集,这将会中断。
在您的情况下,避免引用Visibility
的方法是只使用布尔值,但随后在XAML中使用IValueConverter
从bool
(或其他ViewModel和正常框架类型)转换到您正在使用的所需视图技术(Visibility.Visible
等)。