我有設置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