Поделиться через


Команды в WPF. Часть I

Автор: Диптимайя Патра (Diptimaya Patra)

В этой статье будет показано, что такое команды, и как их можно использовать в WPF.

Команды

Часто бывает полезно сосредоточиться на том, что пользователь хочет получить от приложения. WPF это поддерживает путем абстрагирования команд — команда представляет действие, которое выполняет приложение по запросу пользователя.

Командная система WPF позволяет воспринимать их как разные выражения одной команды.

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

Способ, которым вызывается команда, обычно не важен. Нажимает ли пользователь Ctrl-C, выбирает ли в меню пункты Edit (Правка) -> Copy (Копировать), или нажимает кнопку "Copy" ("Копировать") в панели инструментов, в каждом случае ответ приложения должен быть одинаков: оно должно копировать текущее выделение в буфер обмена.

Давайте возьмем простое приложение, иллюстрирующее описанное выше.

Создание приложения WPF

Запустите Visual Studio 2008, создайте приложение WPF и дайте ему имя CommandsWPF.

Теперь давайте добавим несколько элементов управления, которые будут осуществлять наш пример для понимания команд.

Добавим кнопки с метками Copy, Cut и Paste. Добавим текстовое поле, в котором будет отражаться работа приложения.

Далее приводится XAML для справки.

Теперь мы видим, как можно применять команды к соответствующим кнопкам буфера обмена.

Запустим приложение. Мы видим, что все кнопки отключены.

Даже если выбрать текст в текстовом поле, ничего не происходит, поскольку мы не добавили целевой элемент управления для обработки.

Добавим свойство CommandTarget и установим привязки следующим образом:

Теперь снова запустим приложение и посмотрим, как реализованы команды буфера обмена в кнопках.

Как только выбирается текст, кнопки Cut и Copy включаются.

Как только выполняется операция команды Copy или Cut, включается кнопка Paste.

По умолчанию элемент TextBox имеет Clipboard в качестве контекстного меню (ContextMenu), поэтому контекстное меню отображается даже в случае, если в кнопки не добавлены команды.

Надеюсь, эта статья окажется полезной для изучения команд в WPF. В следующей части мы продолжим изучение команд.