我正在使用WPF进行MVVM设计模式。我有一个ContextMenu,在ListView上有几个项目。根据在ListView中选择的项目数,我想启用/禁用某些MenuItem。有没有一种方法可以将SelectionChanged事件以及ListView中的所选项目数直接路由到 View 模型。如果是这样,我可以很轻松地在VM中为IsEnabled定义一个依赖项属性。我只是想避免隐藏代码来处理此问题。

凯莉

最佳答案

您可以使用附加行为将SelectionChanged事件路由到您的VM。基本上,您创建类型为bool的附加属性。当此属性设置为true时,将为目标菜单的SelectionChanged事件注册一个事件处理程序。

然后,附加属性可以包含要执行的命令(数据绑定(bind)到VM中类似RelayCommand的命令)。

检查这些帖子以获取更多详细信息:

  • http://www.japf.fr/2008/12/how-to-attach-commands-to-any-uielement/
  • http://marlongrech.wordpress.com/2008/12/13/attachedcommandbehavior-v2-aka-acb/
  • 关于wpf - ListView.SelectionChanged更改为RoutedCommand,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1560849/

    10-11 15:15