我有设置ContextMenu的TabControl。从ContextMenu命令查找TabItem的正确方法
所有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模板之类的东西,就不会破坏它。
或者可能是整个方法是错误的,我不应该使用路由命令呢?我最初使用路由添加新标签命令,需要热键。
在此先感谢。
UPDATE:
伊戈尔的解决方案是从建筑POV清洁剂(除了我会删除_在视图模型),但我希望有一个可重复使用的关闭命令是独立于什么TabControl的必然(因为关闭/关闭全部选项卡存在于各种应用程序中,并且没有语义链接到特定模型)。
此外,我不能使用自定义DataTemplate,因为我已经有了一个自定义模板,并且它的子类化会使解决方案有点过于复杂。
谢谢,请在原始问题结尾处查看我的回复。仍然是+1。 – 2009-02-09 10:19:54