如何避免XAML中的CommandName与ViewModel之间的紧密耦合

时间:2011-11-18 10:52:45

标签: wpf mvvm

我有多个视图,它们是单视图模型的数据绑定。 现在我看到使用ViewModel在不同视图中与命令名紧密耦合。 所以我需要避免这种紧密耦合。 任何帮助将受到高度赞赏。

干杯, Sajesh Nambiar

2 个答案:

答案 0 :(得分:2)

这是非常常见的做法,当View和ViewModel都引用相同的命令名称时,这就像一个通用的协议/公共接口。从另一个角度来看,Comamnd Name就像一个双方都支持的公共接口--View和ViewModel。所以

  • 如果View能够在给定的情况下通知一个udnerlying ViewModel它通过命令名称引用一个命令
  • 如果ViewModel能够/想要处理任何特定命令 - 它通过公共接口公开命令并通过Name注册它,同时提供自己的命令处理逻辑

如果我们查看来自事件的命令立场 - 查看能够在特定情况下“提升”给定命令并通过指定它来公开此事件(命令)名称(如暴露公共事件)这是ViewModel的问题是否它会处理这样的命令(订阅Event)。

答案 1 :(得分:0)

为什么会有紧耦合? viewmodel公开一个命令,任何想要的人都可以绑定它。 btw mvvm并不意味着viewmodel和view彼此无关。他们失去了约束力并且彼此密切相关。