По умолчанию RoutedCommand не может выполняться - PullRequest
0 голосов
/ 09 июля 2011

Я использую пользовательскую RoutedCommand в контекстном меню. Команда определяется следующим образом:

public static readonly RoutedCommand RoutedAddMainHeading = new RoutedCommand();

И к нему обращаются так:

<ContextMenu>
    <MenuItem Header="Add Main Heading" Command="local:JurisdictionVM.RoutedAddMainHeading" />
</ContextMenu>

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

Если я использую собственную реализацию ICommand (CanExecute всегда возвращает true), этого не произойдет, но команда не будет перенаправлена.

Я пытался вызвать CommandManager.InvalidateRequerySuggested, но, похоже, это ничего не делает.

Я использую приемник команд, чтобы определить привязку команды и связать ее с моей моделью представления, что может быть причиной проблемы. Я использую реализацию, которую я нашел здесь: http://www.codeproject.com/KB/WPF/VMCommanding.aspx

ОБНОВЛЕНИЕ: Не похоже, что проблема связана с привязкой пользовательских команд. Я попробовал стандартную привязку CommandBinding, связанную с методами кода и у меня та же проблема. CommandBinding определяется как:

<CommandBinding Command="local:JurisdictionVM.RoutedAddMainHeading" CanExecute="Foo_CanExecute" Executed="Foo_Executed"/>

Кажется, это проблема, уникальная для ManuItem. У меня нет этой проблемы, если я использую эту команду в кнопке.

Есть ли другой способ принудительно пересмотреть CanExecute?

Или способ установить RoutedCommand по умолчанию включенным (или способ написать пользовательский)?

Ответы [ 2 ]

0 голосов
/ 09 июля 2011

Похоже, это та же проблема, что и здесь:

Почему этот контекстный пункт меню привязан к WPF RoutedCommand?

Решение состоит в том, чтобы установить фокус в конструкторе окна.

0 голосов
/ 09 июля 2011

Попробуйте позвонить CommandManager.InvalidateRequerySuggested().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...