привязка команд не работает? - PullRequest
2 голосов
/ 20 мая 2011

Я работаю над приложением с несколькими вкладками (например, текстовый редактор с несколькими вкладками), где у каждой вкладки есть свой контент.И в контекстном меню tabitem, это меню с командой, скажем, командой SelectAll.

После запуска приложения пункт меню всегда отключен, выполнение команды не выполняется.

Итак, как я могу заставить мои командные привязки работать?

CODE ::

В контекстном меню в TextEditor>

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

В CommandBindings в TextEditor>

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

TabItems с TextEditor создаются во время выполнения

Ответы [ 2 ]

3 голосов
/ 20 мая 2011

Это происходит потому, что ContextMenus являются отдельными окнами со своими собственными VisualTree и LogicalTree.

Используйте вот так

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

Для получения дополнительной информации перейдите по ссылке ниже

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

1 голос
/ 20 мая 2011

см. Ответ «биджу», ваш DataContext для вашего ContextMenu не тот, который вы ожидаете.

и, если у вас возникнут какие-либо проблемы с переплетом, взгляните на Snoop .Это простой в использовании инструмент для проверки привязок во время выполнения.

я всегда проверяю 2 вещи:

  • - это мой DataContext тот, который я ожидаю?!
  • это мой обязательный путь, который я хочу?1013 *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...