Windows Presentation Foundation Jaroslav Klíma, MFF UK 17.5.2007
Windows Presentation Foundation Architektura Hello, WPF! Okna Navigace Umístění a okraje prvků Ovládací prvky Transformace Data binding Styly Animace Odkazy
.NET Framework 3.0 WPF je grafickým subsystémem .NET Frameworku 3.0
WPF: architektura PresentationFramework a PresentationCore napsané v managed kódu milcore v unmanaged kódu – kvůli výkonu
PresentationCore System.Threading.DispatcherObject Základ pro většinu objektů Řeší běh více vláken současně Systém správ jako Win32 Messages “bubble” or “tunnel” System.Windows.DependencyObject Vlastnosti místo metod Notifikace o změně – INotifyPropertyChange Sdílené výchozí hodnoty vlastností Attached properties
System.Windows.Media.Visual Jednoduché a rozšiřitelné, založené na callback metodách Spojení mezi managed kódem a milcorem vizuální elementy vs. composition nodes
System.Windows.Media.Visual Používá algoritmus malíře namísto ořezávání Data-driven rendering: new Line() namísto DrawLine() Vytváření animací nastavením properties Strom je v cache – vykreslování se neblokuje na callback metodách
System.Windows.UIElement Subsystémy Layout, Input a Events Layout: Measure & Arrange Input: driver (kernel) -> user32 -> WPF -> Dispatcher Preview event a samotný event Systém příkazů: Input gestures & command definitions
PresentationFramework System.Windows.FrameworkElement Nadstavba subsystémů nižších vrstev a několik nových subsystémů Layout aplikace vlastnosti jako MinWidth, Margin... Brána k nižším vrstvám, např. StoryBoard Data binding podobně jako v ASP.NET můžeme bindovat vlastnosti, transformace i seznamy Data templates, styling (explicitní a implicitní)
System.Windows.Controls.Control Šablony – ControlTemplate Control základní vlastnosti (Background, Padding..) data model – vlastnosti ovlivňující model interakce nebo model zobrazení podle konkrétních dat interaction model – příkazy a jejich vazby na gesta Object Control.Content
Hello, WPF! Třída Application Markup a code-behind Singleton – Application.Current Startup, StartupUri MainWindow DispatcherUnhandledException ShutdownMode
Windows Vytvoření Životní cyklus Vztahy Pozice – startup a z-order Velikost MinWidth, Width, MaxWidth, SizeToContent ShownInTaskbar, WindowState
WindowStyle Neorámované okno Single border, 3D border, Tool window, None Neorámované okno WindowStyle = None; AllowsTransparency = "True" Background = “Transparent”
Dialog boxes Modal / modeless Common: Open file, Save file, Print Vlastní dialogová okna Validace
Navigace Page WindowTitle, WindowHeight Odkazy - hyperlinks Fragment navigation – odkazy do jiné části stránky URI#name Sub-content navigation pomocí Frame Atribut JournalOwnership
Pseudo-strukturovaná navigace Navigation service Pseudo-strukturovaná navigace Pomocí konstruktoru a application-scope vlastností Strukturovaná navigace Pomocí PageFunction
Umístění a okraje prvků Podobně jako ve WinForms HorizontalAlignment, VerticalAlignment Left, Right (Top, Bottom), Center, Stretch Margin, Padding Panely ovládacích prvků Canvas, DockPanel, Grid, StackPanel, WrapPanel
Ovládací prvky Tlačítka Menu Seznamy Range controls Navigační prvky Button, RadioButton, RepeatButton Menu ContextMenu, Menu, Toolbar Seznamy ComboBox, ListBox, TreeView Range controls CheckBox, Slider Navigační prvky Frame, ScrollBar, ScrollViewer, TabControl, Thumb
Dialogová okna Informační prvky Dokumenty Editace textu Media Layout PasswordBox, Print dialog Informační prvky Expander, Label, Popup, ProgressBar, StatusBar, ToolTip Dokumenty DocumentViewer, FlowDocumentPageViewer, FlowDocumentReader, FlowDocumentScrollViewer Editace textu Textbox, RichTextBox Media Image, MediaElement Layout Border, BulletDecor, Canvas, DockPanel, GridSplitter, GroupBox, Panel, Separator, StackPanel, WrapPanel, ViewBox
Transformace RenderTransform TransformGroup TranslateTransform RotateTransform ScaleTransform SkewTransform TransformGroup
Data binding Dependency properties – „závislé vlastnosti“? DataContext „Dependency properties are like normal .NET properties on steroids.“ DataContext Binding Source/ElementName, Path, Converter
Styly Implicitní styly Themes vs. Styles <Window.Resources> <Style x:Key="redBar" TargetType="{x:Type ScrollBar}"> <Setter Property="Background" Value="red" /> </Style> </Window.Resources> <ScrollBar Style="{StaticResource redBar}">… Implicitní styly
Animace <Rectangle ...> <Rectangle.Triggers> <EventTrigger RoutedEvent="Rectangle.Loaded"> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:5" /> </Storyboard> </BeginStoryboard> </EventTrigger> </Rectangle.Triggers> </Rectangle>
Typy animací Zvláštní třída pro každý typ <Type>Animation <Type>AnimationUsingKeyFrames <Type>AnimationUsingPath - Pro vlastní animace: <Type>AnimationBase
Příště Globalizace a lokalizace 2D a 3D grafika Accessibility Šablony dat Typy zdrojů
Další zdroje http://msdn2.microsoft.com/en-us/library/ms754130.aspx http://wpf.netfx3.com/ http://www.codeproject.com/WPF/