Binding 如何处理操纵子视图的父视图命令,以及视图建模将是乏味的或不需要的?

Binding 如何处理操纵子视图的父视图命令,以及视图建模将是乏味的或不需要的?,binding,silverlight-4.0,mvvm,viewmodel,Binding,Silverlight 4.0,Mvvm,Viewmodel,我知道将视图模型绑定到视图是可以的,包含视图模型的视图模型是可以的,而包含视图的视图是可以的。我的情况是,子视图似乎需要绑定到视图 特别是,我有这样一种情况:特定命令的实现不需要在视图模型中,也不需要以任何方式操作视图模型(并且也不影响底层模型)。我可以将命令放在视图模型中,绑定它,然后执行它,但这是一种明确的代码气味,它阻止了视图模型层与视图层的清晰分离 该命令从父视图启动,但会影响子视图。我可以想出几种方法来处理这个问题 在父级中添加事件处理程序,以某种方式找到正确的子级(不确定如何在Si

我知道将视图模型绑定到视图是可以的,包含视图模型的视图模型是可以的,而包含视图的视图是可以的。我的情况是,子视图似乎需要绑定到视图

特别是,我有这样一种情况:特定命令的实现不需要在视图模型中,也不需要以任何方式操作视图模型(并且也不影响底层模型)。我可以将命令放在视图模型中,绑定它,然后执行它,但这是一种明确的代码气味,它阻止了视图模型层与视图层的清晰分离

该命令从父视图启动,但会影响子视图。我可以想出几种方法来处理这个问题

  • 在父级中添加事件处理程序,以某种方式找到正确的子级(不确定如何在Silverlight中实现),然后执行我需要的所有逻辑
  • 在父级中处理事件,但重新引发不同的事件(双重分派)。在子对象中,处理第二个事件并执行逻辑
  • 将命令绑定到父视图,并处理命令本身(或父视图提供的委托)中的逻辑
  • 将命令直接绑定到子视图。在这种情况下,如何在父视图的xaml中指定绑定到正确的子视图/控件
  • 按照上面的定义,将命令绑定到子视图的视图模型
我该怎么办?

MVVM的“无代码隐藏”规则并不适用于仅与UI相关的代码,例如设置焦点、运行动画、调整大小等。因此,在您的情况下,我会将代码隐藏在视图后面,只让一个视图引用另一个视图

如果您的业务逻辑代码保留在ViewModels中,并且您的演示文稿/UI代码保留在视图后面,那么您就很好了。

MVVM的“无代码隐藏”规则并不适用于仅与UI相关的代码,例如设置焦点、运行动画、调整大小等。因此在您的情况下,我会把代码放在你的视图后面,让一个视图引用另一个视图


如果您的业务逻辑代码保留在视图模型中,而您的演示文稿/UI代码保留在视图后面,那么您就做得很好。

这两个段落都非常有意义,并且与我的结论相匹配。我基本上会选择第二个选项,直到一个更纯粹的MVVM选项“经济上”可行为止。这两段都非常有意义,并且与我最终的结果相匹配。我基本上会选择第二个选项,直到一个更纯粹的MVVM选项“经济”可行。