WPF - Как я могу отключить стандартное поведение EditingCommands для моего настраиваемого richtextbox? - PullRequest
0 голосов
/ 27 марта 2010

Я хочу отключить большинство встроенных функций WPF Richtextbox, которые можно найти в «EditingCommands»

Как я могу отключить их?

1 Ответ

1 голос
/ 08 января 2011

http://www.devx.com/dotnet/Article/34644/1954:

Вы можете отключить любую из включенных по умолчанию команд, добавив привязку CommandBinding. В приведенном ниже фрагменте атрибут CanExecute ссылается на обработчик событий, который может включать логику для предотвращения выполнения команды:

<RichTextBox.CommandBindings>
     <CommandBinding 
       Command="EditingCommands.ToggleBold" 
       CanExecute="BlockTheCommand"/>
   </RichTextBox.CommandBindings>

Соответствующий обработчик события в файле кода C # устанавливает два свойства объекта события. Если для параметра CanExecute установлено значение false, компоненты, связанные с событием, будут знать, что эта опция в данный момент недоступна. В этом случае, чтобы заблокировать команду ToggleBold, если для параметра CanExecute установлено значение false, кнопка Bold на панели инструментов будет отключена. Второе свойство, Handled, предотвращает передачу команды ToggleBold в RichTextBox:

protected void BlockTheCommand(object sender,
     CanExecuteRoutedEventArgs e)
   {
     e.CanExecute = false;
     e.Handled = true;
   }

Если вы решите включить сложную логику в свои обработчики CanExecute, имейте в виду, что это событие часто запускается, потому что пользовательский интерфейс постоянно проверяет и повторно проверяет, доступна ли команда. Если вам необходимо получить доступ к таким ресурсам, как база данных или веб-служба, чтобы определить, должна ли команда быть доступной, убедитесь, что вы кэшируете ресурс и проверяете его только периодически, иначе это ухудшит вашу производительность.

...