TOC

This article has been localized into Polish by the community.

Polecenia:

Wprowadzenie do poleceń WPF

W poprzednim rozdziale tego kursu omawialiśmy jak obsługiwać zdarzenia, np. w momencie kiedy użytkownik kliknie na przycisk lub element menu. Nowoczesne interfejsy umożliwiają dostęp do pewnych funkcji programu z różnych jego miejsc, lub poprzez różne akcje jakie są użytkownikowi udostępnione.

Na przykład, jeżeli masz typowy interfejs z głównym menu i zestawem pasków narzędzi, akcje takie jak Nowy lub Otwórz mogą być dostępne w menu, na pasku narzędzi, w menu kontekstowym (dostępnym po kliknięciu prawym przyciskiem myszy), a także po zastosowaniu skrótów Ctrl+N oraz Ctrl+O.

Każda z podjętych akcji odnosi się do tej samej części kodu. W przypadku aplikacji WinForms musiałbyś zdefiniować zdarzenia dla każdej z nich i dopiero wtedy wywołać wspólną funkcję. Odnosząc się do powyższego przykładu wymagało by to, obsłużenia przynajmniej trzech zdarzeń, oraz kodu obsługującego skróty klawiszowe. Niezbyt komfortowa sytuacja.

Polecenia

Za pomocą WPF Microsoft próbuje temu zapobiec wykorzystując do tego polecenia. Polecenia umożliwiają tobie na definiowanie akcji w jednym miejscu, a następnie na odnoszenie się do nich za pomocą różnych części interfejsu, jak menu, elementy pasków narzędzi itd. WPF nasłuchuje także skrótów klawiszowych, aby następnie przekazać je do odpowiedniego polecenia. Co sprawia że jest to idealny sposób na użycie tego elementu interfejsu w swoich aplikacjach.

Polecenia rozwiązują kolejny problem w przypadku wileu odniesień w kodzie do tej samej funkcji. W aplikacjach WinForms programista jest odpowiedzialny za napisanie kodu, który wyłacza poszczególne elementy interfejsu, w przypadku gdyby dana akcja nie była dostępna. Np. jeżeli twój program mógłby korzystać z funkcji schowka Wytnij, ale jedynie jeżeli odpowiedni tekst byłby zaznaczony, byłbyś odpowiedzialny za kod włączający oraz wyłączający daną funkcję. Dotyczyło by to odpowiedniego elementu menu głównego, przycisku na pasku narzędzi oraz menu kontekstowego, podczas każdej zmiany zaznaczenia tekstu.

Komendy WPF sprawiają że wszytko jest scentralizowane. Korzystając z jednej metody decydujesz czy dana komenda ma zostać wykonana, a WPF automatycznie przełącza wszystkie subskrybujące elementy interfejsu na odpowiednio włączone lub wyłączone. Sprawia to, że tworzenie dynamicznych, responsywnych aplikacji jest jeszcze prostsze.

Wiązanie poleceń

Polecenia same z siebie nie wykonują żadnej pracy. Ich główną podstawą jest interfejs ICommand, który jedynie definiuje zdarzenie oraz dwie metody: Execute() i CanExecute(). To właśnie pierwsza z nich zajmuje się wykonywaniem podjętej akcji. Zadaniem drugiej zaś jest określenie czy dana akcja jest obecnie dostępna. Aby wykonać daną akcję, potrzebne jest połączenie pomiędzy poleceniem oraz twoim kodem. Tą częścią zajmuje się CommandBinding.

Z reguły CommandBinding (wiązanie danych) jest definiowany w odniesieniu do okna lub UserControl (kontrolki użytkownika). Przechowuje ono referencję do polecenia którym zarządza, jak też i odpowiedni uchwyt dla zdarzenia odpowiedzialnego za polecenia Execute() oraz CanExecute().

Polecenia predefiniowane

Możesz rzecz jasna definiować własne polecenia, czym się zajmiemy w jednym z następnych rozdziałów. Jednak żeby trochę ułatwić tobie pracę, zespół WPF zdefiniował ponad 100 poleceń znajdujących najczęstsze zastosowanie. Podzielono je na 5 kategorii: ApplicationCommands, NavigationCommands, MediaCommands, EditingCommands oraz ComponentCommands. Szczególnie kategoria ApplicationCommands zawiera polecenia dla najczęściej stosowanych przez użytkownika akcji, takich jak New, Open, Save, a także Cut, Copy oraz Paste.

Podsumowanie

Polecenia pomagają tobie odpowiadać na akcje z róznych źródeł, wykorzystując do tego jedno wydarzenie. Sprawia to tym samym, że o wiele prostsze jest włączanie lub wyłączanie elementów interfejsu użytkownika, w oparciu o ich obecny status i dostępność. To na tyle teorii. W następnych rozdziałach omówimy w jaki sposób polecenia są wykorzystywane i jak definiować własne polecenia.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!