2011-05-20 61 views
2

我在一個多選項卡應用程序(例如:多選項卡文本編輯器)上工作,其中每個tabitem都有自己的內容。在tabitem的contextmenu中,它們是帶有命令的menuitem,比如SelectAll命令。commandbinding不工作?

運行應用程序後,菜單項總是被禁用,沒有命令執行完成。

那麼,我該如何讓我的commandbindings工作?

代碼::

上下文菜單在文本編輯>

<MenuItem Command="local:TextEditor.SelectAllCommand" Header="Select All" /> 

在化CommandBindings在文本編輯>

<UserControl.CommandBindings> 
    <CommandBinding Command="local:TextEditor.SelectAllCommand" 
        Executed="SelectAll_Executed" CanExecute="SelectAll_CanExecute" /> 
</UserControl.CommandBindings> 

用文本編輯的的TabItems在運行時

+0

第一大步可能是與我們分享代碼 – Snowbear 2011-05-20 10:23:12

+0

@Snowbear JIM編譯器如果在這裏發佈代碼,這將是一團糟。 – Code0987 2011-05-20 10:27:40

回答

3

這創造因爲ContextMenus是獨立的窗口,並帶有自己的Visual樹和LogicalTree。

使用這樣

<MenuItem Header="Cut" Command="Cut" CommandTarget=" 
      {Binding Path=PlacementTarget, 
      RelativeSource={RelativeSource FindAncestor, 
      AncestorType={x:Type ContextMenu}}}"/> 

欲瞭解更多請查看下

http://www.wpftutorial.net/RoutedCommandsInContextMenu.html

+0

感謝這個鏈接和你的幫助 – Code0987 2011-05-20 10:56:20

+0

這很好。但是XAML編輯器顯示一個僞造的「對象引用未設置爲對象的實例」。它在編譯和運行後可以正常工作,但如果不在編輯器中顯示錯誤,那將會很好。有什麼辦法解決這個問題? – 2016-03-14 03:01:27

1

鏈接看答案六必居,你對你的文本菜單的DataContext是不是你所期望的一個。

如果您將來有任何綁定問題,請查看Snoop。它是一個易於使用的工具,可以在運行時檢查綁定。

我總是檢查兩件事情:

  • 是我的DataContext一個我期待?
  • 是我想要的一個綁定路徑?!