ВУЗ:
Составители:
Рубрика:
109
{
get { return MonitorCommands.applicationUndo; }
}
static MonitorCommands()
{
applicationUndo = new RoutedUICommand(
«ApplicationUndo», «Application Undo», typeof(MonitorCommands));
}
В данном примере эта команда определяется в классе окна по имени
MonitorCommands.
Пока что код не производит впечатления сложного (за исключением
небольшого фрагмента с кодом рефлексии, который выполняет операцию
отмены). Самой сложной частью является интеграция в модель команд
WPF журнала команд. Идеальным решением будет организовать это так,
чтобы отслеживать можно было любую команду, независимо от того, как
она инициируется и связывается.
Обеспечить реагирование на конкретную команду довольно легко,
однако задача состоит в обеспечении реагирования на выполнение любой
команды. Решение заключается в использовании класса
CommandManager, который предоставляет несколько статических собы-
тий. К числу этих событий относятся CanExecute, PreviewCanExecute, Exe-
cuted и PreviewCanExecuted. В данном примере наиболее интересными яв-
ляются два последних события, потому что они возбуждаются всякий раз,
когда выполняется какая - либо команда.
Событие Executed подавляется классом CommandManager, но все
равно можно присоединить обработчик событий с помощью метода
UIElement.AddHandler() и передать в нем в качестве необязательно третье-
го параметра значение true. Это позволит извлекать событие, даже не-
смотря на то, что оно обрабатывается. Однако событие Executed возбуж-
дается после выполнения события, когда уже поздно сохранять информа-
цию о состоянии задействованного элемента управления в журнале ко-
манд. Поэтому нужно обеспечивать реагирование на это событие, а не на
Страницы
- « первая
- ‹ предыдущая
- …
- 108
- 109
- 110
- 111
- 112
- …
- следующая ›
- последняя »