C# WPF
WPF – Windows Presentation Foundation WPF je Grafický framework pro psaní Windows aplikací (NET Framework 3.0 (WinFX) Další varianta k WinFoms WPF pro lepší design Vektorová grafika - umožňuje bezestrátovou změnu velikosti prvků, barevné gradienty, používání geometrických tvarů Animace 2D, 3D, rotace Multimédia - práce s audiem a videem Efekty - stíny, záře, rozostření, průhlednost nebo zrcadlení WPF běží na vrstvě DirectX – zpracovává se přímo na grafické kartě a nezatěžuje procesor
.NET Framework 3.0
XAML XAML (čti "zamml") eXtensible Application Markup Language. Je značkovací jazyk pro vytváření uživatelského rozhraní Vychází z XML Deklarativní jazyk vhodný ke konstrukci a inicializaci .NET objektů Sestává z pravidel jak má parser zpracovávat XML Slouží pouze pro psaní uživatelského rozhraní aplikace Odděluje uživatelského rozhraní od programové části Soubor .XAML Soubor .cs
XAML – pokračování XAML: <Button xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation Content=”OK” Click=”button_Click”/> C#: System.Windows.Controls.Button b = new System.Windows.Controls.Button(); b.Click += new System.Windows.RoutedEventHandler(button_Click); b.Content = “OK”; XAML je case sensitive Namespaces http://schemas.microsoft.com/winfx/2006/xaml/presentation http://schemas.microsoft.com/winfx/2006/xaml
XAML - Vnořené členy objektových elementů Hodnota vlastnosti Content Kolekce položek Hodnoty, které mohou být převedeny k rodičovskému elementu Vkládání controlů do sebe
Styly Styly Pojmenovaná skupina vlastností Kolekce hodnot vlastností, které se aplikují na elementy Změna vlastnosti se promítne do všech prvků, které styl obsahují Fungují podobně jako CSS u webových stránek Mezi elementy Style se definují vlastnosti <Style x:Key=“Nazev_Stylu“> ... </Style> Styly lze dědit
Dependency Properties Triggers Dependency Properties Standardní properties rozšířené o speciální funkce Hodnota této property může být závislá na hodnotách vlastností nadřazených, či jiných elementů Infrastruktura k tomuto účelu – triggers (spouštěče) Property triggers Reagují na hodnoty Dependency Properties Multitriggers umožňují zadat více podmínek pro provedení akce Data triggers MultiDataTrigger pro nastavení více podmínek
Data Binding je technika propojení prvků a elementů na data Proces propojení UI s aplikační logikou Režimy datových vazeb vyjadřují, jakým způsobem a jakým směrem bude komunikace probíhat OneWay znamená, že komunikace probíhá pouze jednosměrně, aktualizuje pouze cíl ze zdroje OneTime stejné s OneWay, jen s tím rozdílem, že cíl je inicializován ze zdroje, ale pouze jednou. Změny zdroje se pak již v cíly neprojeví OneWayToSource je opak režimu OneWay TwoWay vyjadřuje komunikaci oběma směry, tedy zdroj mění cíl, ale i pokud se změní hodnota cíle, dojde k aktualizaci zdroje
Layouts Canvas Plátno, kde jednotlivé prvky mohou být rozmístěny nezávisle, pouze ve vztahu k souřadnicovému systému
Layouts Grid Nejpoužívanější rozložení, umožňuje rozmisťovat jednotlivé prvky do tabulky Je třeba specifikovat strukturu tabulky (počet řádků a sloupců)
Layouts StackPanel Zobrazuje vložené prvky pod sebou nebo vedle sebe, Zjednodušeně jednořádkový, jednosloupcový grid Vkládaný prvek je umístěn tak, aby postupně zaplňoval prostor v určitém směru
Logický a vizuální strom Každé zobrazení aplikace je koncipováno jako strom Má jediný kořenový element Logický strom - odpovídá zapouzdření elementů zobrazení a jejich datových zdrojů Vizuální strom - rozkládá každý element do vizuálních primitiv nejnižší úrovně Vizuální strom je především vstupním bodem při vykreslování obrazovky
Logický a vizuální strom
RoutingStrategy (směr jejího šíření logickým stromem) Routed event Routed event Zvláštní typ pro události Využívají existenci stromové struktury zobrazení k tomu, aby šlo zpracovávat jakoukoliv událost na jakémkoliv prvku Routed events navigují nahoru nebo dolů vizuálním stromem podle tzv. RoutingStrategy RoutingStrategy (směr jejího šíření logickým stromem) Ve směru od zdroje ke kořenovému elementu zobrazení (Bubble) Ve směru od kořene zobrazení ke zdroji události (Tunnel) Bez šíření stromem (Direct)
RoutingStrategy