Úvod do Windows Presentation Foundation (WPF)

1. díl - Úvod do Windows Presentation Foundation (WPF)

Tomáš Jecha, MVP, MCSD       19.01.2012       WPF, .NET       23657 zobrazení

Lehký úvod do Windows Presentation Foundation. Co to vlastně je Windows Presentation Foundation? Jaké má výhody oproti starší technologii Windows Forms? Co je to jazyk XAML?

Co je to WPF?

Technologie Windows Presentation Foundation (WPF) je rozhraní pro návrh a zobrazování uživatelského prostředí. Je to logický nástupce starší technologie Windows Forms (WinForms). Ačkoliv je stále možné používat jak WinForms, tak WPF.

Vznik WPF zapříčinila potřeba psát graficky složitější aplikace a unifikovat způsob návrhu napříč platformami. Starší platforma WinForms totiž začala narážet na různá omezení, které vycházely z podstaty jejího návrhu. Pracuje s elementy uživatelského prostředí vestavěného přímo v systému Windows, které není úplně snadné upravovat jak po stránce vzhledové, tak po stránce chování. Pokud se například rozhodnete, že chcete zobrazit v seznamu navíc tlačítko nebo obrázek, popřípadě vytvořit složitější datový grid s rozbalovacími podseznamy, zjistíte, že se nejedná o nic snadného. A to především kvůli tomu, že tato technologie s takovými úpravami prostě nepočítá.

Oproti WinForms se WPF snaží poskytnout co nejrozšiřitelnější objektový model. Vývojář není vázán na pevnou sadu komponent s pevným vzhledem. Můžete si plně graficky upravit jakoukoliv část jakékoliv komponenty nebo vytvořit komponentu úplně novou. Zároveň však WPF dává k dispozici sadu základních komponent v základním vzhledu operačního systému. Takže pokud nechcete, vzhled neměníte a používáte komponenty podobně jako ve WinForms.

Pro koho je tento seriál určen?

Tento seriál bude počítat se základní znalostí prostředí Visual Studio 2010 a jednoho z jeho základních jazyků – tedy C# nebo Visual Basic .NET.

Setkávám se s názorem, že WPF je technologie, která se používá na graficky přeplácané aplikace, ve kterých potřebujete plně měnit vzhled všech komponent a vybírání v seznamu doprovázet 3D efektem. Něco taková sice ve WPF lze poměrně snadno udělat, ale nepředpokládám, že je to hlavní důvod, proč tuto technologii začít používat. A proto tento seriál chci vést jako zdroj informací pro vývojáře klasických formulářových aplikací, pro které není výhrou rotující video na tlačítku, ale funkční komplexní grid zobrazující detaily objednávek. Nicméně musím přiznat, že se určitě čas od času neubráním a nějaký ten grafický výstřelek, abych demonstroval možnosti WPF, předvedu.

Výhody WPF oproti technologii WinForms?

Technologie WPF je chronologicky novější. Při jejím návrhu se tak mohli autoři poučit z nedostatků WinForms. Subjektivně tedy vidím hlavní výhody v:

  • Komplexnější objektový model – oproti WinForms existuje celá řada nových událostí, parametů, vlastnostní – lze tak snadněji upravovat, přidávat a reagovat na chování elementů
  • Binding a triggery – binding je velmi mocný způsob, kterým můžete vázat vlastnosti nejen datových objektů na uživatelské prostředí, ale také zajišťovat jednodušší logiku uživatelského prostředí bez nutnosti psát kód
  • Styly a templaty – celé WPF je koncipované tak, aby jste mohli měnit vzhled i funkčnost již existujících prvků a pomocí stylů toho lze velmi elegantně dosáhnout – budu se jim věnovat v dalších dílech
  • Dispatchers dispatcher je typ objektu, který zajišťuje synchronizaci úkolů (události, binding atp.) do hlavního aplikačního vlákna – o tomto typu objektu budu věnovat samostatný díl
  • Jazyk XAML – návrh uživatelského prostředí se provádí pomocí jazyka XAML (založeného na XML), který můžeme využít i například v mobilních telefonech Windows Phone nebo ve webové Silverlight aplikaci – vždy ale můžete to, co je definované v jazyce XAML zapsat i pomocí jazyku jako je C# nebo Visual Basic
  • Layout – správné rozložení ovládacích prvků i při změně velikosti celého formuláře a zároveň při změnách velikostí vnitřních elementů (delší text na tlačítku, větší obrázek atp.) lze poměrně elegantním způsobem vyřešit sadou sofistikovaných komponent
  • Vektorové transformace – celé WPF je vektorové a je tedy možné elementy zmenšovat, zvětšovat, otáčet a jinak transformovat – jedním z mnoha užitečných důsledků může být to, že výsledná aplikace je nezávislá na rozlišení zobrazovacího zařízení

Jak je to s verzemi WPF?

Prakticky s každou novou verzí .NET Frameworku byla vydána i nová verze WPF. První spatřila světlo světa WPF 3 pod .NET Framework 3.0. Dále následovaly verze pro .NET Framework 3.5 (WPF 3.5), .NET Framework 3.5 SP1 (WPF 3.5 SP1), .NET Framework 4 (WPF 4) a také pod nyní připravovaným .NET Framework 4.5 (WPF 4.5).

Samozřejmě doporučuji používat na nové projekty nejnovější stabilní verzi. Ale je jasné, že ne vždy to z technických důvodů jde (nemáte k dispozici novější Visual Studio, zákazník nebude mít instalovaný nový .NET Framework, máte již hotové komponenty pro starší verzi atp.).

V tomto seriálu se budu primárně věnovat WPF 4. Bude tedy nutné mít nainstalované Visual Studio 2010 nebo vyšší.

WPF Hello world

Založení projektu

Začneme s velmi jednoduchou WPF aplikací. Spusťte si Visual Studio 2010 a zvolte vytvoření nového projektu.

Poznámka: Pokud nemáte k dispozici plné Visual Studio, stáhněte si Express edici, která je zdarma z adresy: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express (k dispozici je také varianta Visual Basic Express).

Jako typ projektu zvolte WPF Application.

WPF Application

WPF Application template

Po potvrzení se připraví téměř prázdný projekt s jedním formulářem (MainWindow.xaml) a souborem popisující obecné chování aplikace (App.xaml).

WPF Project

Po otevření MainWindow.xaml se zobrazí designér okna a XAML editor. Ten nabízí funkce k návrhu uživatelského prostředí.

Horní polovina znázorňuje vizuální náhled editované komponentu – v našem případě okno – třída Window. A spodní část pak obsahuje samotný XAML kód, který toto okno popisuje. XAML je reprezentace objektového modelu pomocí XML. Více o XAMLu se dozvíte v dalších dílech.

XAML editor

Pokud v tuto chvíli aplikaci spustíte, zobrazí se prázdné okno nadepsané “MainWindow”.

Hello WPF world!

Nyní v designéru MainWindow.xaml do editoru XAML kódu do elementu Grid vložte tento element:

<Label Content="Hello WPF world!" />

Název elementu Label je prvek pro zobrazení textové informace vložené do atributu Content.

Vlevo nahoře se na formuláři zobrazí textové pole s textem “Hello WPF world!”. Text ještě vycentrujeme na střed formuláře přidáním atributů HorizontalAlignment (horizontální zarovnání) a VerticalAlignment (vertikální zarovnání) na hodnoty Center (na střed). Tyto vlastnosti mají defaultní hodnoty nastavené na zarovnání HorizontalAlignment=Left a VerticalAlignment=Top, proto byl prvek původně vlevo nahoře. Pokud tedy v XAML kódu nejsou některé vlastnosti uvedené, znamená to, že se použije jejich defaultní hodnota.

Výsledný kód:

<Label Content="Hello WPF world!" HorizontalAlignment="Center" VerticalAlignment="Center" />

Nyní se bude udržovat prvek vždy na středu formuláře. A to i pokud budeme měnit jeho velikost.

Prvek Label může mít nastavené další hodnoty atributů, které budou definovat vzhled textu. Vyzkoušejte si změnit například tyto atributy:

  • FontSize (velikost písma)
  • FontWeight (zda je písmo tučné)
  • FontFamily (písmo)
  • FontStyle (kurzíva)

Aplikaci spusťte. Výsledek pak vypadá následovně:

image

Závěr

Další díl se věnuje hnacímu motoru celého WPF – objektu Dispatcher.

 

hodnocení článku

2 bodů / 2 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Všechny díly tohoto seriálu

10. Návrh přihlašovacího formuláře - TextBox, PasswordBox, CheckBox a Label 20.04.2012
9. ContentControl, Button a TextBlock 10.04.2012
8. Canvas, StackPanel, WrapPanel 22.03.2012
7. Grid 16.03.2012
6. Základy pozicování 23.02.2012
5. Device independent pixels 16.02.2012
4. Architektura a objektový model WPF 09.02.2012
3. Jazyk XAML 02.02.2012
2. Architektura WPF – Dispatcher 26.01.2012
1. Úvod do Windows Presentation Foundation (WPF) 19.01.2012

 

Mohlo by vás také zajímat

Genericita, rozhraní a dědičnost

Jazyk C# je multiparadigmatický, což v praxi znamená, že v něm můžeme dělat hodně věcí. Jak ale do sebe jednotlivá paradigma zapadají? Co se hezky doplňuje a co není vzájemně kompatibilní? V tomto článku chci popsat, jak se chová IEquatable vzhledem k dědičnosti typu T.

Windows 10 GameJam: konference a herní hackathon

Co čeká webové vývojáře na platformě .NET, představení .NET Core 1.0

 

 

Nový příspěvek

 

Diskuse: Úvod do Windows Presentation Foundation (WPF)

Dobrý den, píšete, že pokud v XAML kódu nejsou některé vlastnosti prvků uvedené, znamená to, že se použije jejich defaultní hodnota.

Můj dotaz zní: Lze si někde dohledat, popřípadě stáhnout přehled ovládacích prvků WPF včetně popisu nastavitelných vlastností / atributů a jejich defaultních hodnot?

Předem děkuji za odpověď.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Diskuse: Úvod do Windows Presentation Foundation (WPF)

Dekuji za pekny a uzitecny serial.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Úvod do Windows Presentation Foundation (WPF)

Pokiaľ p. Jecha skutočne vyčerpá tému do detailov určite získa nových ľudí pre WPF a ocenenie "Seriál roku 2012" :-) Aj keď robím vo Winforms teším sa na pokračovanie....

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Úvod do Windows Presentation Foundation (WPF)

Co je přesně myšleno tvrzením "způsob návrhu napříč platformami"?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Návrh uživatelského prostředí nejen desktopových aplikací. Tedy konkrétně pro mobilní zařízení, web a nyní i Metro ve Windows 8 (což zahrnuje tablety).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Jediné mobilní zařízení, které podporuje WPF, je už nyní mrtvé Windows Phone. U webových aplikací je myšleno nejspíš Silverlight, kterému s příchodem HTML5 už taky zvoní hrana. Metro aplikace jsou zatím otázka, ale nedokážu si v Metro stylu představit nic jiného než nějaké idiotské, graficky vytuněné prohlížeče fotek a podobné neužitečné hovadiny na celou obrazovku, navíc dotykové ovládání podporuje normální WPF, takže Metro je zcela zbytečné.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Co to s tím má společného? Jen jsem odpověděl na otázku - WPF je technologie vytvořená s úmyslem podporovat více platforem.

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

No má to s tím společného to, že vzhledem k věcem, které jsem uvedl, těch více platforem bude nakonec pouze jediná platforma - Windows XP nebo lepší.

Jinak doufám, že v některém z dalších dílů budou rozebrány detaily možností dotykového ovládání a do jaké míry je podporují standardní ovládací prvky, což jediné by mě z WPF zajímalo.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

To jste tady špatně. Windows hejting se dělá na root.cz.

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Diskuse: Úvod do Windows Presentation Foundation (WPF)

Dobrý den,

vyvíjím právě pro zákazníka svůj první projekt ve WPF 4 a zajímalo by mě, jak je to se staršími Windows (XP, 2000), kde ta aplikace může také běžet. Je instalace .NET 4 na tyto OS bez problémů?

Díky, JiKra

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

podívejte se na: http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky za odpověď. Koukám, že pokud by měl klient Win 2000, WPF nepřipadá do úvahy.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano.

Bohužel Windows 2000 již mají ukončenou oficiální podporu. WPF je tu sice již několik let, ale stále je to relativně nová technologie.

Pokud chce zákazník využít výhody WPF, musí aktualizovat.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Diskuse: Úvod do Windows Presentation Foundation (WPF)

těším se na další pokračování

nahlásit spamnahlásit spam 4 / 4 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback