TOC

This article is currently in the process of being translated into Romanian (~85% done).

Commands:

Introduction to WPF Commands

Într-un capitol anterior al acestui tutorial, am vorbit despre modul de gestionare a evenimentelor, de ex. când utilizatorul face clic pe un buton sau pe un element de meniu. Într-o interfață de utilizator modernă, este tipic ca o funcție să fie accesibilă din mai multe locuri, totuși, invocată de diferite acțiuni ale utilizatorilor.

De exemplu, dacă aveți o interfață tipică cu un meniu principal și un set de bare de instrumente, o acțiune ca New sau Open ar putea fi disponibilă în meniu, în bara de instrumente, într-un meniu contextual (de ex. ) și de la o comandă rapidă de la tastatură, precum Ctrl + N și Ctrl + O.

Fiecare dintre aceste acțiuni trebuie să execute ceea ce este în mod obișnuit aceeași piesă de cod, deci într-o aplicație WinForms, va trebui să definiți un eveniment pentru fiecare dintre ele și apoi să apelați o funcție comună. Cu exemplul de mai sus, acest lucru ar conduce la cel puțin trei gestionari de evenimente și un anumit cod care să se ocupe de comenzi rapide de tastatură (shortcut-uri) . Nu este o situație ideală.

Commands

Cu WPF, Microsoft încearcă să remedieze acest lucru cu un concept numit comenzi. Vă permite să definiți acțiunile într-un singur loc și apoi să le referiți din toate controalele de interfața cu utilizatorul dvs. cum ar fi elementele de meniu, butoanele barei de instrumente și așa mai departe. WPF va "asculta", de asemenea, pentru comenzi rapide de la tastatură și le va transmite comenzii potrivite, dacă există, făcând aceasta modalitatea ideală de a oferi comenzi rapide de la tastatură într-o aplicație.

Commands also solve another hassle when dealing with multiple entrances to the same function. In a WinForms application, you would be responsible for writing code that could disable user interface elements when the action was not available. For instance, if your application was able to use a clipboard command like Cut, but only when text was selected, you would have to manually enable and disable the main menu item, the toolbar button and the context menu item each time text selection changed.

Cu comenzile WPF, aceasta este centralizată. Cu o singură metodă, decideți dacă o comandă poate fi executată sau nu și apoi WPF comută întreaga abonare a elementelor de interfață care sunt activate sau dezactivate automat. Acest lucru face mult mai ușor să creați o aplicație receptivă și dinamică!

Command bindings

Comenzile nu fac nimic de la sine. La rădăcină, ele cuprind interfața ICommand, care definește doar un eveniment și două metode: Execute () și CanExecute (). Prima este pentru realizarea acțiunii , în timp ce a doua este pentru a determina dacă acțiunea este disponibilă în prezent. Pentru a efectua acțiunea comenzii, aveți nevoie de o legătură între comandă și codul dvs. și aici este locul unde CommandBinding intră în joc.

O CommandBinding (legătura catre comanda) este de obicei definită pe o Window sau pe un UserControl și conține o referință la Comanda pe care o gestionează, precum și la manipulatorul evenimentului real pentru a gestiona evenimentele Execute () și CanExecute () din Command.

Pre-defined commands

Puteți, bineînțeles, să implementați comenzile proprii, ceea ce vom examina într-unul din capitolele următoare, dar pentru a vă ajuta, echipa WPF a definit peste 100 de comenzi utilizate în mod obișnuit pe care le puteți utiliza. Acestea au fost împărțite în 5 categorii, numite ApplicationCommands, NavigationCommands, MediaCommands, EditingCommands și ComponentCommands. Mai ales ApplicationCommands conține comenzi pentru o mulțime de acțiuni foarte frecvent utilizate cum ar fi New, Open, Save și Tăiați, Copiați și Lipiți.

Summary

Comenzile vă ajută să răspundeți la o acțiune comună din mai multe surse diferite, utilizând un singur manipulator de evenimente. De asemenea, aceasta face mult mai ușor să se permită și dezactivați elementele interfeței utilizator bazate pe disponibilitatea și starea curentă. Aceasta a fost toata teoria, dar in urmatoarele capitole vom discuta cum sunt comenzile folosit și cum vă definiți propriile comenzi personalizate.

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!