我有我在其上设置 ContextMenu 的 TabControl。
所有 ContextMenu 元素都有命令集。
<ContextMenu x:Key="tabMenu">
<MenuItem Command="{x:Static tabs:TabCommands.Close}" />
<MenuItem Command="{x:Static tabs:TabCommands.CloseAllButThis}" />
<MenuItem Command="{x:Static tabs:TabCommands.CloseAll}" />
</ContextMenu>
所有命令都被路由,并且 CommandBindings 在 TabControl 之上定义了几个级别。
所以问题是:在 CommandBinding CanExecute/Execute 事件处理程序中,找出调用菜单的 TabItem 的正确方法是什么?正确的意思是,如果我更改 TabItem 模板之类的东西,它就不会损坏。
或者可能整个方法是错误的,我不应该为此使用路由命令?我最初将路由用于需要热键的“添加新选项卡”命令。
提前致谢。
更新:
Igor 的解决方案比架构 POV 更清晰(除了我会在 ViewModel 中删除 _),但我希望有一个独立于 TabControl 绑定的可重用关闭命令(因为所有类型的应用程序中都存在选项卡的关闭/关闭全部)并且没有在语义上链接到特定模型)。
此外,我不能使用自定义 DataTemplate,因为我已经有一个自定义模板,并且子类化它会使解决方案有点过于复杂。