XAML.cz Magazín moderních technologií založených na XAML

Krok za krokem po WPF – I.

Napsáno pro Novinky od Jarda Jirava  [05.10.2010]

Před několika dny jsem měl přednášku nazvanou Krok za krokem po WPF, kde jsem se snažil posluchačům ukázat jaké výhody a částečně i nevýhody přináši WPF a jak s ním vlastně začít.

Postupně jsem se tak dostal od samotných základů, kdy jsem představil deklarativní jazyk XAML, představil jsem layout engine pro sandnější umísťování vizuálních prvků na okno a samozřejmě jsem též ukázal, jak tyto vizuální prvky nastylovat, aby se líbili především uživatelům našich aplikací vytvořených ve WPF.

V druhé části přednášky jsem se pak zaměřil na to, co dělá z WPF poměrně silný nástroj pro tvorbu desktopových aplikací. Z mého pohledu se jedná především o silný DataBinding a použití DataTemplate a toto jsem se snažil demonstrovat na příkladu připojení aplikace na data. A abych si ulehčil práci při vytváření aplikací, k tomu pak slouží tvorba vlastních uživatelských prvků a taktéž šablon pro jednotlivé prvky.

Jsem moc rád, že se sešla poměrně početná skupina posluchačů a to především těch aktivních, kteří měli otázky. Na některé jsem se snažil odpovídat hned, některé jsem si pak nechal, tak říkajíc, do zásoby. Několik z nich se pokusím zodpovědět již nyní, ty ostatní si pak nechám na samostatný článek.

Nejdříve se však pokusím vysvětlit onen problém, který nastal při stylování ListBoxu, který byl napojen na data. Tento ListBox byl umístěn v Gridu, který měl dva řádky, a právě onen první řádek se při vložení ListBoxu schoval. Pokud jsem však přiřadil předpřipravený styl, tak se celá aplikace chovala správně. V ten moment mi nedošlo to, co jsem chtěl demonstrovat, že tzv. Attached property není nutné dávat jen do samotné deklarace prvku, ale je možné ji umístit i do stylového předpisu. A právě to byl onen háček, jakmile jsem přiřadil deklarovaný styl, vše bylo správně funkční.

Device independent pixel

Jedna z mých odpovědí pak směřovala právě na to, že ve WPF nepracujeme s pixely, ale s tzv. Device independent pixel, což je počítaná jednotka a je vyjádřená jako:

1 device independent pixel = 1 / 96 palce

Pokud bychom tedy chtěli vědět, kolik fyzických pixelů bude zabírat na konkrétním monitoru, potřebujeme znát nastavení DPI pro daný monitor, nejčastěji se asi setkáme s hodnotou 96DPI, ale někteří uživatelé si volí vyšší hodnoty, třeba 120DPI, ale samozřejmě se můžeme dočkat i monitorů s vysokým rozlišením, kde bude pro oči příjemnější použít třeba 144DPI nebo tiskových 300DPI.

Při klasickém nastavení, tedy 96DPI, nám tak bude podle vzorce

1 fyzický pixel =  1 device independent pixel * DPI

vycházet, že 1 fyzický pixel odpovídá 1 device independent pixelu.

WPF a hardwarová akcelerace

Mezi dotazy pak také padlo, jak je to s hardwarovou akcelerací při použití WPF a zda ji využívá za všech okolností nebo dochází i k softwarovému renderování. Na tuto otázku jsem znal odpověď jen částečně, ale věděl jsem, že ne vždy je využíváno hardwarové akcelerace a že je možné i programově přinutit náš program, aby použil softwarovou akceleraci.

Nakonec jsem ten správný článek, který o tomto problému pojednává poměrně obsáhle našel a tak se o něj podělím - Software Rendering Usage in WPF.

Další otázky

Samozřejmě padly i další otázky, na které by bylo dlouhé odpovědět nebo by bylo třeba delšího a konkrétnějšího uvedení do problému nebo vyzkoušení možných variant. Ano, WPF a vývoj s pomocí XAML je krásný v tom, že téměř vždy existuje více možností, jak dosáhnout kýženého cíle. Jak jsem již v úvodu slíbil, na některé se uřčitě dostane v některém z článků. Především ty o stylování a použití Control templates mohou být zajímavé a mohou ukázat, jak WPF využít při vývoji desktopových aplikací.

Závěrem

Samozřejmě budu rád, pokud se nebudete ostýchat i tady, a zanecháte některou vaši otázku nebo jen komentář pod tímto článkem.

A jelikož se i mě tento úvod do WPF líbil, už nyní připravuji jeho pokračování a pokusím se uskutečnit přednášku o výhodách použití WPF oproti WinForms a to na použití právě stylování a využití šablon. Takže pokud máte nějaké náměty, co byste chtěli slyšet a vidět, určitě se ozvěte.

Komentáře

ukládám komentář, vyčkejte prosím..
  1. Buďte první, kdo napíše komentář.

@xamlcz

  • RT @jvanrhyn: XAML, It's a bit like olives. Takes a while to get used to. But once you're used to it. It is actually pretty good. <3 XAML
  • RT @moser_christian: WPF Inspector 0.9.7 is released. It supports .NET 3.5 and 4.0 The project is now open source and available on CodeP ...
  • Jeff Handley oznámil vydání WCF RIA Services v.1.0 SP1 RTM http://bit.ly/gOgckn ke stažení na http://bit.ly/gVAXdK
  • jedna výzva pro Brno. Byl někdo z vás na přednášce o RIA v MS Akvárku? Dejte o sobě vědět. Děkuji
  • také jste uvažovali o tom, že zkusíte na projekt použít Caliburn Micro nebo naopak Prism 4? A co tak obojí, šlo by to nebo ne? Již brzy