任何人都可以澄清这些条款吗?
我发现它们非常模糊或依赖于上下文。
例如,我们有一个带有项目列表的 VM。选择不仅会影响按钮的可访问性(即命令可以执行),还会影响 VM 的行为:一个或多个项目需要同时编辑很重要。
第二个示例是创建新项目的过程。
在用户提供数据后,我们将项目添加到项目集合中,从而将其插入列表中并希望使其被选中并聚焦。现在我们通过为项目的虚拟机引入IsSelected
和属性来做到这一点。IsFocused
真正的工作是由视图通过绑定、附加属性和行为来完成的。
我们团队的一些成员坚持认为向 VM 添加此类属性(IsVisible
、、an 等)会给 VM 带来 UI 逻辑,这不是一个好的做法,因为 UI 和表示逻辑是混合的IsSelected
。IsFocused
对我来说,遵循模式很重要,但更重要的是不要重复自己。我更喜欢绑定和代码隐藏中的几行代码,而不需要将 DataContext 转换为具体的 VM 类型、调用 VM 的方法等等。
尽管如此,我不喜欢HolyWars,并且承认由于对这两个术语的误解以及将两者分开的标准,我可能是错的。