Пример Disable Command Source Via Dispatcher Timer
Обновлен: Ноябрь 2007
В этом примере демонстрируется включение и отключение источника команд посредством DispatcherTimer.
Источники команд, например классы MenuItem и Button, прослушивают событие CanExecuteChanged класса RoutedCommand, к которому они подключены, для определения, когда нужно запросить команду, чтобы увидеть, можно ли ее выполнить в целевом объекте текущей команды. Источники команд обычно самостоятельно отключаются, если команда не может быть выполнена, и включаются в обратном случае; например MenuItem самостоятельно отключается, если команда не может быть выполнена.
Объект CommandManager уведомляет RoutedCommand посредством события RequerySuggested о том, что целевой объект команды изменил состояние. RoutedCommand создает событие CanExecuteChanged которого ожидает источник команды. Обычно этого механизма уведомления достаточно, однако существуют некоторые ситуации, в которых CommandManager не уведомляется о том, что условия в целевом объекте команды изменились, и таким образом событие RequerySuggested никогда не вызывается, а источник команды никогда не запрашивает RoutedCommand. В этих случаях CommandManager может принудительно вызвать событие RequerySuggested путем вызова InvalidateRequerySuggested.
В этом примере создается команда RoutedCommand, которая может быть выполнена, только когда число секунд в текущем времени больше, чем в значении целевого объекта. Создается таймер DispatcherTimer, который каждую секунду вызывает метод InvalidateRequerySuggested. Это гарантирует, что источник команды будет получать событие CanExecuteChanged, следовательно он сможет вызвать метод CanExecute для данной команды.
Другой вариант этого примера см. в разделе Пример Disable Command Source Via System Timer. Дополнительные сведения о работе с командами см. в разделе Общие сведения о системе команд.
В этом примере описывается конкретная функциональная возможность Windows Presentation Foundation, и поэтому рекомендации по разработке приложений не соблюдаются. Более полное рассмотрение Windows Presentation Foundation (WPF) и рекомендации по тактике разработки приложений Microsoft .NET Framework см. в следующих источниках:
Специальные возможности: Рекомендации по специальным возможностям
Безопасность: Безопасность Windows Presentation Foundation
Локализация: Общие сведения о глобализации и локализации WPF
Построение примера
Установите пакет средств разработки программного обеспечения для Windows и откройте окно командной строки среды его построения. В меню "Пуск" выделите пункты "Все программы", "Пакет SDK для Microsoft Windows", а затем "Оболочки CMD".
Загрузите образец, как правило из документации пакета SDK, на жесткий диск.
Чтобы построить образец из окна командной строки среды построения, перейдите в исходный каталог образца. В командной строке введите MSBUILD.
Чтобы построить образец в Microsoft Visual Studio, загрузите решение образца или файл проекта и нажмите сочетание клавиш CTRL + SHIFT + B.
Выполнение примера
Для запуска скомпилированного образца в окне командной строки среды построения, выполните EXE-файл в папке Bin\Debug или Bin\Release, содержащихся в папке кода источника образца.
Для запуска скомпилированного образца с помощью отладки в Visual Studio, нажмите клавишу F5.
См. также
Задачи
Пример Disable Command Source Via System Timer