视图模型应更接近视图还是模型?

3
假设我们有一个视图,它的数据上下文是一个视图模型。它绑定到一个名为Visible的属性。
这个属性应该是什么类型?
- 布尔值(更符合模型友好,但需要使用转换器)? - Visibility(更符合视图友好)?
4个回答

4
在ViewModel中保留bool值,然后在View中使用BoolToVisibilityConverter
原因:
ViewModel应该与View和UI框架无关。也就是说,您应该能够将ViewModel复制到控制台应用程序中并点击F5键运行。
确保利用MarkupExtension简化转换器的用法。

4
一般而言,标题中的问题:更接近视图。
例如:使用布尔类型。
您的虚拟机应该是视图的逻辑模型。但它不应包含任何与GUI相关的类型(可见性)。

3
我认为视图模型是应用程序工作流的代表。通常情况下,一个应用程序应该有一个与视图对应的视图模型——但这并不意味着视图模型在任何方式上都应该与特定视图耦合——我认为视图模型在应用程序工作流程中的某个点上与理论视图匹配。
视图模型绝对不应该暴露UI特定类型(即可见性、图像等)。保持您的视图模型UI不可知,并使用值转换器将一般类型转换为UI特定类型。
除非模型恰好被您正在查看的视图紧密表示,否则它不应该代表模型。

2
你应该选择Boolean。它更加灵活,例如,如果你想将此属性绑定到复选框上,你可以轻松地完成这个过程,而不需要更改任何ViewModel代码,并且能够给你的UI设计人员更多的自由来决定如何在UI中绑定值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接