Windows Presentation Foundation

Úvod do WPF

Windows Presentation Foundation je platforma pro vytváření grafických uživatelských rozhraní (GUI). WPF bylo vytvářeno za účelem nahrazení starších technologií jako je Windows Forms. Na rozdíl od Windows Forms se ve WPF vytváří rozhraní v jazyce XAML. Tento jazyk je odvozen od jazyka XML. Jazyk XML je určen pro výměnu informací, ale může sloužit jako základ pro jiný jazyk. Důraz při vytváření rozhraní je kladen na deklarativní přístup pro vytváření rozhraní. V XAML se nepoužívají posloupnosti příkazů pro vytvoření rozhraní (imperativní přístup). Pomoci XAML se zapíše přímo jak má rozhraní vypadat. Programátor (designér GUI) není zatěžován s vytvářením objektů tříd. XML a XAML se označují jako značkovací jazyky. Značka (element) bude v XAML zastupovat objekt třídy. Při zpracování XAML dojde automaticky k vytvoření příslušných objektů. K těm je pak možné přistupovat i v kódu C# nebo Visual Basic .NET. WPF stále dovoluje použít tyto jazyky pro přidávání prvků rozhraní.

XAML dovoluje efektivně oddělit práci designérů a programátorů. Ti mohou téměř zároveň pracovat na obou částech aplikace. Tedy na rozhraní aplikace a aplikační logice. Přidáním XAML do vývoje aplikace, umožnilo vytvořit nástroje výhradně určené pro tvorbu rozhraní. Takovým nástrojem je například Microsoft Blend.

WPF obsahuje kromě vytváření oken aplikací a přidávaní ovládacích prvku i tyto části: data binding, 2D grafika, 3D grafika, Animace a Media. Tím výčet všech možností, co jsou ve WPF zdaleka nekončí. Ty co jsou vyjmenované + XAML budou tvořit obsah této práce. V poslední kapitole navíc bude ukázka přidání dokumentu do rozhraní aplikace. Což je také jednou z částí WPF.

WPF obsahuje speciální techniku pro načítání dat do rozhraní aplikace. Ta se nazývá data binding v překladu vazba dat. Slouží k vytvoření spoje mezi cílovou vlastností a zdrojem dat. Cílovou vlastností může být například nápis na tlačítku nebo text v textovém poli. Zdroj pak může představovat jinou vlastnost nebo třeba kolekci objektů. Některé ovládací prvky slouží pro zobrazení kolekcí dat. Proto je možné pomocí data bindingu do nich načíst přímo kolekci objektů. Na zobrazované objekty pak lze aplikovat datovou šablonu. Ta zobrazí data pomocí ovládacích prvků v rámci původního zobrazení.

Součástí WPF je také grafický systém dovolující přidávat grafiku do rozhraní aplikace. Ten dovoluje přidávat různé 2D a 3D objekty. Některé 2D objekty mají stejné vlastnosti jako ovládací prvky. Je tedy možné je přímo umístit do rozhraní aplikace. 2D Grafika je založena především na vektorové grafice. Co se týče 3D grafiky ta je zobrazována pomocí speciálního ovládacího prvku. WPF dovoluje vytvářet prvky definováním vrcholů trojúhelníků. Ty pak tvoří povrch 3D objektu. Na objekty je možné pak nanést materiál. Pomocí různých druhů materiálů je možné vytvořit dojem povrchu různých objektů ze skutečného světa. Objekt je možné také osvětlit pomocí několika typů světel. Zobrazování probíhá pomocí kamery. Kamera pak používá jednu z technik promítání 3D objektů na dvourozměrný povrch.

WPF obsahuje velice zdařilý systém vytváření animací. Ten je vytvořen tak, aby co nejvíce zjednodušil vytvoření animace. Pro vytvoření animace jsou k dispozici tři druhy animací. Ty se dále dělí na to, pro jaký typ vlastnosti jsou. WPF dovoluje přidat animaci do rozhraní prostřednictvím XAML. Spuštění animace se provede taktéž pomocí XAML.

WPF taktéž podporují média: obrázky, zvuk a video. Pro přehrávání zvuku a videa se používá stejný ovládací prvek. Přehrávání je možné ovládat pomocí funkcí Play, Stop a Pause. Je také možné zjistit aktuální pozici přehrávání. Zacházení s medii je ve WPF velice intuitivní.

Pro čtení textu je dobré mít základní znalosti z OOP: třída, dědění, metody… Taktéž je potřeba alespoň základní znalost programovacího jazyka C#: vlastnosti, vytvoření třídy, metody, parametry funkce, události… V některých částech práce jsou sice vysvětlovány některé tyto prvky. Nicméně není to příliš obsáhlé z důvodu zaměření samotné práce a nedostatku místa. Veškeré příklady jsou vytvořeny v prostředí Visual Studio 2012. Pro jistotu správného chodu ukázkových aplikací je potřeba mít nainstalován .NET Framework 4.5.

Ukázka z úvodní aplikace
Obrázek 1 Ukázka z úvodní aplikace [zdroj: vlastní]
Vytvoření rozhraní aplikace
<Canvas>
        <ListBox x:Name="listBox" 
          Height="222" Canvas.Left="10" Canvas.Top="10" Width="155"/>
        
        <Button Content="Přidat" 
                Canvas.Left="197" Canvas.Top="10" 
                Width="75" 
                Click="pridat_Click"/>
        
        <Button Content="Odebrat" 
                Canvas.Left="197" 
                Canvas.Top="47" 
                Width="75" 
                Click="odebrat_Click"/>
</Canvas>
ListBox vytvoří seznam, kde po kliknutí na tlačítko Přidat se přidá text „WPF“ do seznamu. Po kliknutí na tlačítko Odebrat se odebere poslední položka seznamu.
private void pridat_Click(object sender, RoutedEventArgs e)
{
     //přidám prvek do seznamu
     listBox.Items.Add("WPF");
}

private void odebrat_Click(object sender, RoutedEventArgs e)
{
     //přesunu odkaz na aktuální prvek na poslední přidaný prvek
     listBox.Items.MoveCurrentToLast();

     //uložím si odkaz na aktuální prvek           
     var posledni = listBox.Items.CurrentItem;

     //otestuju zda kolekce není prázdná (pokud ano: poslední = null)
     if(posledni != null)
     {
         //odeberu poslední prvek z kolekce
         listBox.Items.Remove(posledni);
     }
}
Metoda pridat_Click se zavolá, pokud někdo klikne na tlačítko Přidat. Pokud uživatel klikne na tlačítko odebrat, zavolá se metoda odebrat_Click.
Ukázkové řešení: Aplikace/UvodniAplikace