如果我们将解决方案分成三个项目:
查看
视图模型
模型
我们是否应该避免引用任何处理' View'在' ViewModel'完全如System.Windows.Controls
或者可以接受使用WPF名称空间System.Windows
中的属性,例如{ViewModel'中的Visibility
。项目。我担心的是,一旦我在ViewModel'中引用了WPF程序集。对于未来的人来说,在视图模型代码中弹出一个对话框,可以很容易地做一些事情。
答案 0 :(得分:9)
从ViewModel中完全避免使用WPF名称空间和程序集通常是一个好主意。 ViewModel不应该关心View - 也不应该绑定到特定的View框架。
例如,如果这样做是正确的,那么相同的ViewModel可能适用于WPF作为Windows Phone。如果您引用WPF程序集,则会中断。
在您的情况下,避免引用Visibility
的方法是仅使用布尔值,但在XAML中使用IValueConverter
来转换bool
(或其他ViewModel)和普通框架类型)到您正在使用的所需视图技术(Visibility.Visible
等)。