270 likes | 477 Views
Windows Presentation Foundation. Jaroslav K lí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.
E N D
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 • 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
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 • 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 • 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 • TranslateTransform • RotateTransform • ScaleTransform • SkewTransform • TransformGroup
Data binding • Dependency properties – „závislé vlastnosti“? • „Dependency properties are like normal .NET properties on steroids.“ • DataContext • Binding • Source/ElementName, Path, Converter
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/