This article has been localized into Ukrainian by the community.
Вступ до WPF команд
В попередньому розділі ми розказували про обробку подій, наприклад пот натиску на кнопку чи елемент меню. В сучасному користувацькому інтерфейсі функції, зазвичай, можна викликати різними способами і з кількох місць.
Наприклад: якщо у вас є типовий інтерфейс з головним меню та кількома панелями інтерфейсів, то такі дії, як "Відкрити" чи "Створити новий..." повинні бути доступними в меню, панелі інструментів, контекстному меню (наприклад при натиску ПКМ на основній області) та з комбінацій клавіш, таких як Ctrl+N та Ctrl+O.
Всі ці дії повинні виконувати один і той самий код. У WinForms застосунках вам потрібно було б визначити подію для кожної з них, щоб потім викликати загальну для них функцію. Приклад вище вимагає, щонайменше три обробники подій та код для обробки комбінацій клавіш. Не найкраще рішення:
Команди
У WPF Microsoft спробували вирішити цю проблему, створивши концепцію під назвою команди. Вони дозволяють визначити дії в певному місці, а потім викликати їх з усіх елементів керування, наприклад: елементів меню, кнопок панелі інструментів тощо. Крім того WPF зчитує комбінації клавіш і передає їх відповідним командам. Завдяки цьому можна з легкістю реалізувати комбінації клавіш у вашому застосунку.
Команди також позбавлюять від інших клопотів, які виникають при роботі з різними точками доступу до однієї і тієї ж функції у WinForms застосунках. Адже при роботі з ними вам довелося б самому відповідати за те, щоб вимикати користувацький інтерфейс при неможливості виконати його функції. Наприклад, якщо застосунок використовує команди, пов'язані з буфером обміну, такі як Копіювати. В цьому випадку вам доведеться вмикати чи вимикати елементи меню, кнопки панелі інструментів та контекстне меню при кожній зміні виділення тексту.
З WPF командам це завдання виконуються централізовано. Ввм лише потрібно створити метод, що визначає, чи можна виконати команду. Завдяки йому WPF автоматично вмикатиме та вимикатиме всі підписані елементи. Завдяки цьому можна сильно спростити створення адаптивних та динамічних застосунків.
Прив'язки команд
Команди самі по собі нічого не роблять. Їх основою є інтерфейс ICommand, який містить тільки подію та 2 методи: Execute() та CanExecute(). Перший відповідає за виконання поточної дії, а другий за визначення можливості виконати дію. Для виконання поточної дії команди вам потрібне посилання між командою та кодом, тут на допомогу приходить CommandBinding.
CommandBinding зазвичай визначається вікном або користувацьким елементом керування і містить посилання на команду, яку обробляє. Як і обробник подій для роботи з подіями Execute() та CanExecute() команди.
Попередньо визначені команди
Ви можете реалізувати ваші власні команди. Про це ми поговоримо в наступних статтях. Але для стпрощення роботи команда WPF розробила більше 100 частовживаних команд. Вони поділені на 5 категорій: команди застосунку, команди навігації, команди медіа, команди редагування та команди компонентів. Зокрема команди застосунку містять команди для багтьох часто вживаних дій, таких як "Створити новий...", "Відкрити", "Зберегти", "Вирізати", "Копіювати" та "Вставити".
Підсумок
Команди допомагають відповідати на поширені дії з кількох різних джерел, використовуючи один обробник подій. Крім того завдяки ним можна набагато легше вмикати та вимикати елементи інтерфейсу, в залежності від спроможності виконати поточну дію. Все це теорія, але в наступній статті ми обговоримо те, як використовувати команди та, як створювати ваші власні поточні команди.