WPF: элемент ContextMenu, связанный с командой, включается только после вызова команды из другого источника. Почему это так? - PullRequest
0 голосов
/ 13 марта 2010

У меня есть ContextMenu, все элементы которого связаны с командами и правильно включаются / отключаются после ЛЮБОЙ команды, вызванной из другого источника, но до этого все они отключены. Поэтому, если я запускаю приложение, все MenuItems отключаются, но если я вызываю любую из связанных команд из другого источника (например, кнопок), они синхронизируются с кодом CanExecute. Я понятия не имею, как отладить это. Любая мысль будет полезна!?!

Ответы [ 2 ]

4 голосов
/ 13 июля 2011

Кажется, это ошибка, когда нет сфокусированного элемента в основной области фокусировки окна. Обходной путь - привязать CommandTarget MenuItem к главному окну.

Ответ Марко Чжоу здесь: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/7bd75a7c-eab4-4f3a-967b-94a9534a7455

<Window.ContextMenu>
    <ContextMenu >
      <ContextMenu.Items>
        <MenuItem Command="ApplicationCommands.Open" 
                  CommandTarget="{Binding Path=PlacementTarget,RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}"/> 
      </ContextMenu.Items>
    </ContextMenu>
  </Window.ContextMenu>
0 голосов
/ 13 марта 2010

Иногда вам нужно заставить WPF переоценить, включены команды или нет.

Где-то в вашем коде добавьте вызов:

CommandManager.InvalidateRequerySuggested();

Посмотрите, поможет ли это.

...