Windows Presentation Foundation Ovládací prvky
Ovládací prvky Všechny standardní prvky jsou dostupné a některé nové Třídy jsou společné pro WPF System.Windows.Controls, ne System.Windows.Forms.Controls Vzhled plně oddělen od funkcionality a modifikovatelný prostřednictvím šablon Nevytvářet nové prvky, využít exitující logiku a definovat nový vzhled
Jak ovládací prvky fungují Prvky obsahují Commands – operace jako jsou Cut, Copy nebo Paste Properties – vlastnosti modifikující vzhled nebo chování Events – ovládací prvky vyvolávají události Metody – část funkcionality je dostupná formou metod Commands, Properties a Events dostupné v XAML Aplikační logika Data binding – vazba na datové zdroje Template – šablona definující vzhled prvku
Události WPF rozšiřuje standardní mechanismus.NET events Routed events Události jsou zpracovány v elementu samotném, ale i ve všech „nadřazených“ elementech (v tzv. logickém stromu) Události mohou Probublat – událost prochází od původce směrem nahoru ve stromu být Tunelovány – události začínají u kořene a sestupují směrem dolů k původci být Směrovány - zpracovává pouze původce události
Události WPF definuje většinu routed events v párech bublající-tunelovaný Tunelovaný začíná prefixem „Preview“ Tunelovaný proběhne jako první, hned za ním Bublající Bublání/tunelování lze zastavit private void btn_click (object sender, RoutedEventArg e) { e.Handled = true; } private void btn_click (object sender, RoutedEventArg e) { e.Handled = true; } Některé události jsou pouze Směrovány, jiné pouze Probublány (příklady) B: GotMouseCapture, LostMouseCapture, … S: MouseEnter, MouseLeave T/B: PreviewMouseMove, MouseMove
Příkazy (Commands) Vznikají např. příkazy z menu nebo klávesovými zkratkami WPF využívá stejnou myšlenku jako u událostí – Routed Commands WPF definuje třídu RoutedCommand Instance asociována s každou položkou menu a toolbar tl. Po vyvolání je spuštěna dvojice událostí PreviewExecuteEvent a ExecuteEvent Jsou tunelovány a probublány jako události vstupu Cílem události je ten prvek, který má aktuálně fokus
Standardní příkazy a zpracování Standardní příkazy jsou rozděleny do několika tříd Mapování příkazu na metodu zpracování Třída CommandBinding propojí příkaz a metody Kolekce CommandBindings obsahuje tato propojení CommandBindings má každý grafický element (UIElement) Množinu existujících příkazů lze lehce rozšířit TřídaObsah ApplicationCommands Společné všem aplikacím (undo, open, close, print) ComponentCommands Pohyb po informacích (scrool, moveToEnd, selekce) EditCommands Práce s textem (bold, italic, zarovnání) MediaCommands Média operace, zvuk, stopy (play, pause)
Příklad zpracování příkazu public partial class Window1 : Window { public Window1 () { InitializeComponent(); CommandBinding cb = new CommandBinding(ApplicationCommands.New); cb.Execute += ZpracujNew; CommandBindings.Add(cb); } private void ZpracujNew(object sender, ExecuteEventArgs e) { … } private void ZpracujNew(object sender, ExecuteEventArgs e) { … }}
Vyvolání příkazu Standardních prvky UI (menu, toolbar) Tzv. vstupní gesta MouseGesture – vyvolaná myší nebo stylusem KeyGesture – klávesové zkratky Přímo z kódu aplikace ApplicationCommands.New.Execute(cilovyElement); Spojením s elementem UI Kopírovat Kopírovat
Video ukázka Ovládací prvky, zpracování událostí a příkazů, vlastní typ příkazu Video ukázka Ovládací prvky, zpracování událostí a příkazů, vlastní typ příkazu
Shrnutí Shrnutí Přepracované ovládací prvky s plným přizpůsobením vzhledu Rozšířený systém řízení a zpracování událostí a zpráv
Odkazy Prezentace David Krčmář, Acad. Developer Evangelist Video David Krčmář MSDN Windows Vista Developer Center Microsoft.NET Framework Download platformy a ovládacích prvků ult.aspx ult.aspx ult.aspx Doporučení pro Windows Vista UX
© 2009 Microsoft Corporation.