This article has been localized into Swedish by the community.
Introduktion till WPF-kommandon
I ett tidigare kapitel i denna kurs behandlades hantering av händelser (events) t.ex. när en användare klickar på en knapp eller ett menyalternativ. I ett modernt användargränssnitt kan en funktion typiskt nås från flera olika platser, med anrop genererade av olika användaråtgärder.
Om du t.ex. har ett typiskt användargränssnitt med en huvudmeny och en uppsättning verktygsfält kan en åtgärd som ”New” eller ”Open” initieras från huvudmenyn, från verktygsfältet, från en innehållsmeny (dvs. i samband med en högerklickning) eller från en tangentbordskombination som Ctrl+N eller Ctrl+O.
För alla dessa initieringar behöver exakt samma kod genomlöpas; i en ”WinForm”-applikation måste man definiera en event för var och en av dem och sedan anropa en gemensam metod. I exemplet ovan skulle vi behöva åtminstone tre olika eventhanterare plus kod för att hantera tangentbordskombinationen. Detta känns inte helt optimalt.
Kommandon
Med WPF försöker Microsoft avhjälpa detta med ett koncept som kallas kommandon. Det tillåter att man definierar åtgärder på en plats och sedan refererar till denna från alla kontroller i användargränssnittet som menyalternativ, knappar i verktygsfältet etc. WPF svarar också på tangentbordskommandon och vidarebefordrar dessa till ett lämpligt kommando, om ett sådant finns, därigenom blir det lätt att erbjuda tangentbordskombinationer i en applikation.
Kommandon löser också krånglet med att hantera multipla ingångar till samma funktion. I en ”WinForm”-applikation måste man skriva kod för deaktivering av element i användargränssnittet när verkan dessa inte ska vara tillgängliga. Om din applikation t.ex. kan använda urklippskommandon som ”Cut”, men bara när det finns markerad text måste du skriva kod för att aktivera och deaktivera rätt menyalternativ, knappar i verktygsfältet etc. var gång textmarkeringen ändras.
Med WPF-kommandon är detta centraliserat. Med en enda metod kan du besluta huruvida ett givet kommando kan utföras och WPF aktiverar eller deaktiverar alla abonnerande gränssnittselement automatiskt. Detta gör det mycket enklare att skapa följsamma och dynamiska applikationer.
Kommandobindningar
Kommandon gör faktiskt ingenting själva. De måste implementera gränssnittet ”Icommand”, vilket endast definierar en event och två metoder: ”Execute()” och ”CanExecute()”. Den första utför själva åtgärden medan den andra är till för att avgöra huruvida åtgärden är möjlig att utföra just för tillfället. För att utföra kommandots faktiska åtgärd behövs en länk mellan kommandot och din kod och det är här kommandobindningarna (”CommandBinding”) kommer in.
En kommandobindning definieras normalt för ett fönster eller för en användarkontroll och innehåller en referens till kommandot som det hanterar samt till de eventhanterare som handhar event för ”Execute()” och ”CanExecute()”.
Fördefinierade kommandon
Du kan förstås förlita dig på egenimplementerade kommandon, vilket vi skall titta närmare på i något av de kommande kapitlen, men för att underlätta för dig har WPF-teamet definierat över 100 vanliga kommandon som du kan använda. De har indelats i 5 kategorier med namnen ”ApplicationCommands”, ”NavigationCommands”, ”MediaCommands”, ”EditingCommands” och ”ComponentCommands”.
Sammanfattning
Kommandon hjälper dig att svara på begäran om åtgärd från flera olika källor, genom att använda endast en eventhanterare. Detta medför att det blir ycket enklare att aktivera och deaktivera kontroller i användargränssnittet baserat på tillgänglighet och tillstånd. Detta var helt och hållet teori, men i kommande kapitel skall vi diskutera hur kommandon används och hur du kan definiera egna kommandon.