Windows Presentation Foundation - Das umfassende Handbuch

Windows Presentation Foundation - Das umfassende Handbuch

 

 

 

von: Thomas Claudius Huber

Rheinwerk Computing, 2015

ISBN: 9783836237581

Sprache: Deutsch

1248 Seiten, Download: 33918 KB

 
Format:  EPUB, PDF, auch als Online-Lesen

geeignet für: geeignet für alle DRM-fähigen eReader geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Apple iPod touch, iPhone und Android Smartphones Online-Lesen PC, MAC, Laptop
Typ: A (einfacher Zugriff)

 

eBook anfordern

Mehr zum Inhalt

Windows Presentation Foundation - Das umfassende Handbuch



  Vorwort 27  
  Hinweise zum Buch 31  
  TEIL IWPF-Grundlagen und Konzepte 41  
     1 Einführung in die WPF 43  
        1.1 Die WPF und das .NET Framework 43  
           1.1.1 Die WPF im .NET Framework 4.6 43  
           1.1.2 Versionen von .NET, C# und Visual Studio 45  
           1.1.3 Die WPF als zukünftiges Programmiermodell 47  
           1.1.4 Stärken und Eigenschaften der WPF 49  
           1.1.5 Auf Wiedersehen, GDI+ 51  
        1.2 Von Windows 1.0 zur Windows Presentation Foundation 51  
           1.2.1 Die ersten Wrapper um die Windows-API 52  
           1.2.2 Windows Forms und GDI+ 52  
           1.2.3 Die Windows Presentation Foundation 53  
        1.3 Die Architektur der WPF 55  
           1.3.1 MilCore – die »Display Engine« 57  
           1.3.2 WindowsBase 58  
           1.3.3 PresentationCore 59  
           1.3.4 PresentationFramework 59  
           1.3.5 Vorteile und Stärken der WPF-Architektur 59  
        1.4 Konzepte 61  
           1.4.1 XAML 61  
           1.4.2 Dependency Properties 64  
           1.4.3 Routed Events 67  
           1.4.4 Commands 71  
           1.4.5 Styles und Templates 73  
           1.4.6 3D 75  
        1.5 Zusammenfassung 76  
     2 Das Programmiermodell 79  
        2.1 Grundlagen der WPF 79  
           2.1.1 Namespaces 80  
           2.1.2 Assemblies 80  
           2.1.3 Die Klassenhierarchie 81  
           2.1.4 Object 82  
           2.1.5 DispatcherObject 82  
           2.1.6 DependencyObject 83  
           2.1.7 Visual 84  
           2.1.8 UIElement 84  
           2.1.9 FrameworkElement 84  
           2.1.10 Control 86  
           2.1.11 ContentElement 86  
           2.1.12 FrameworkContentElement 86  
           2.1.13 Freezable 87  
           2.1.14 Visual3D 88  
           2.1.15 UIElement3D 88  
        2.2 Projektvorlagen in Visual Studio 2015 88  
           2.2.1 WPF-Anwendung (Windows) 89  
           2.2.2 WPF-Browseranwendung (Web) 91  
           2.2.3 WPF-Benutzersteuerelementbibliothek 92  
           2.2.4 Benutzerdefinierte WPF-Steuerelementbibliothek 92  
        2.3 Windows-Projekte mit Visual Studio 2015 94  
           2.3.1 Ein Windows-Projekt mit XAML und C# 94  
           2.3.2 MainWindow.xaml 97  
           2.3.3 MainWindow.xaml.cs (Codebehind) 98  
           2.3.4 MainWindow.g.cs 99  
           2.3.5 MainWindow.baml 101  
           2.3.6 App.xaml 102  
           2.3.7 App.xaml.cs (Codebehind) 103  
           2.3.8 App.g.cs 104  
           2.3.9 Fazit aus den betrachteten Dateien 105  
           2.3.10 Buildvorgang und MSBuild 105  
           2.3.11 Eine reine Codeanwendung (C#) 108  
           2.3.12 Eine reine, kompilierte XAML-Anwendung 111  
           2.3.13 Best Practice 113  
        2.4 Application, Dispatcher und Window 114  
           2.4.1 Die Klasse »Application« 115  
           2.4.2 Übersicht der Application-Events 115  
           2.4.3 Events der Application-Klasse verwenden 116  
           2.4.4 Die Properties »Windows« und »MainWindow« 118  
           2.4.5 Das Shutdown-Verhalten Ihrer Applikation 120  
           2.4.6 Die Klasse »Dispatcher« 122  
           2.4.7 Fenster mit der Klasse »Window« 128  
           2.4.8 Methoden der Klasse »Window« 129  
           2.4.9 Die Komponenten eines Fensters 130  
           2.4.10 Übersicht der Properties der Klasse »Window« 131  
           2.4.11 Dialogspezifische Properties 137  
           2.4.12 Modale Dialoge 137  
           2.4.13 Nicht-modale Dialoge 141  
           2.4.14 Events der Klasse »Window« 142  
        2.5 Zusammenfassung 143  
     3 XAML 147  
        3.1 XAML? 147  
        3.2 Elemente und Attribute 149  
        3.3 Namespaces 151  
           3.3.1 Der XML-Namespace der WPF 152  
           3.3.2 Der XML-Namespace für XAML 154  
           3.3.3 Über den Namespace-Alias 155  
           3.3.4 XAML mit eigenen CLR-Namespaces erweitern 156  
        3.4 Properties in XAML setzen 160  
           3.4.1 Die Attribut-Syntax 160  
           3.4.2 Die Property-Element-Syntax 161  
           3.4.3 Die Content-Property (Default-Property) 163  
           3.4.4 Die Attached-Property-Syntax 164  
        3.5 Type-Converter 165  
           3.5.1 Vordefinierte Type-Converter 166  
           3.5.2 Eigene Type-Converter implementieren 167  
           3.5.3 Type-Converter in C# verwenden 172  
        3.6 Markup-Extensions 173  
           3.6.1 Verwenden von Markup-Extensions in XAML und C# 174  
           3.6.2 XAML-Markup-Extensions 176  
           3.6.3 Markup-Extensions der WPF 178  
        3.7 XAML-Spracherweiterungen 179  
        3.8 Collections in XAML 185  
           3.8.1 Collections, die IList implementieren 186  
           3.8.2 Collections, die IDictionary implementieren 187  
        3.9 XamlReader und XamlWriter 189  
           3.9.1 XAML mit XamlReader dynamisch laden 190  
           3.9.2 Objekte mit XamlWriter in XAML serialisieren 192  
        3.10 Zusammenfassung 193  
     4 Der Logical und der Visual Tree 197  
        4.1 Zur Veranschaulichung verwendete Komponenten 200  
           4.1.1 Der InfoDialog von FriendStorage 200  
           4.1.2 Die Anwendung »XAMLPadExtensionClone« 201  
        4.2 Der Logical Tree 202  
           4.2.1 Der Logical Tree des InfoDialogs 203  
           4.2.2 Für den Logical Tree verantwortliche Klassen 207  
           4.2.3 Die Klasse LogicalTreeHelper 210  
           4.2.4 NameScopes, FindName und FindLogicalNode 216  
           4.2.5 NameScopes – die Namensbereiche 216  
           4.2.6 INameScope, FrameworkElement und FrameworkContentElement 220  
           4.2.7 Die Methode »LogicalTreeHelper.FindLogicalNode« 221  
        4.3 Der Visual Tree 223  
           4.3.1 Der Visual Tree des InfoDialogs 224  
           4.3.2 Eigene Klassen im Visual Tree 227  
           4.3.3 Die Klasse »VisualTreeHelper« 230  
           4.3.4 Der Visual Tree und das Rendering 233  
        4.4 Der Live Visual Tree in Visual Studio 2015 238  
           4.4.1 Live Visual Tree beim Debuggen anzeigen 239  
           4.4.2 Elemente in der Anwendung auswählen 240  
           4.4.3 Eigenschaften zur Laufzeit ansehen und anpassen 241  
        4.5 Zusammenfassung 243  
     5 Controls 245  
        5.1 Die Klasse »Control« 248  
        5.2 ContentControls 250  
           5.2.1 Buttons 253  
           5.2.2 Der »normale« Button 253  
           5.2.3 Der RepeatButton 255  
           5.2.4 Der ToggleButton 256  
           5.2.5 Der RadioButton 257  
           5.2.6 Die CheckBox 259  
           5.2.7 Labels 260  
           5.2.8 ToolTips anzeigen 262  
           5.2.9 Die Klasse »ToolTip« 263  
           5.2.10 Die Klasse »ToolTipService« 264  
           5.2.11 Scrollen mit ScrollViewer 265  
           5.2.12 WPF- und HTML-Inhalte mit Frame darstellen 268  
           5.2.13 ContentControls mit Header 269  
           5.2.14 Inhalte mit dem Expander auf- und zuklappen 270  
           5.2.15 Inhalte mit der GroupBox gruppieren 271  
           5.2.16 TabItems für ein TabControl 272  
        5.3 ItemsControls 273  
           5.3.1 ItemsControls mit Header 275  
           5.3.2 Navigation mit einer ToolBar 276  
           5.3.3 TreeViewItem und MenuItem 279  
           5.3.4 Baumansicht mit der TreeView 279  
           5.3.5 Navigation über Menüs 284  
           5.3.6 Das gewöhnliche Menü 284  
           5.3.7 Das Kontextmenü 286  
           5.3.8 Elemente mit einem Selector auswählen 288  
           5.3.9 Listen mit der ComboBox anzeigen 289  
           5.3.10 Eine Liste in der ListBox anzeigen 292  
           5.3.11 Die ListView als erweiterte ListBox 293  
           5.3.12 Mehrere Tabs mit einem TabControl 296  
           5.3.13 Das Ribbon 296  
           5.3.14 Eine StatusBar mit Informationen 300  
           5.3.15 »Alternating Rows« mit AlternationCount 301  
        5.4 Controls zur Textdarstellung und -bearbeitung 302  
           5.4.1 »TextBox« zum Editieren von Text 303  
           5.4.2 RichTextBox für formatierten Text 304  
           5.4.3 PasswordBox für maskierten Text 305  
           5.4.4 TextBlock zur Anzeige von Text 306  
           5.4.5 Zeichnen mit dem InkCanvas 306  
        5.5 Datum-Controls 308  
           5.5.1 Calendar 309  
           5.5.2 DatePicker 311  
        5.6 Range-Controls 313  
           5.6.1 Bereich mit Slider auswählen 314  
           5.6.2 ProgressBar zur Statusanzeige 315  
           5.6.3 Scrollen mit der ScrollBar 315  
        5.7 Sonstige, einfachere Controls 316  
           5.7.1 Decorator zum Ausschmücken 316  
           5.7.2 Einfacher Rahmen mit der Border-Klasse 316  
           5.7.3 Elemente mit der Viewbox skalieren 317  
           5.7.4 Bilder mit der Image-Klasse darstellen 318  
           5.7.5 Einfaches Popup anzeigen 319  
        5.8 Zusammenfassung 322  
     6 Layout 325  
        6.1 Der Layoutprozess 325  
           6.1.1 Die zwei Schritte des Layoutprozesses 326  
           6.1.2 Schritt 1: Measure 326  
           6.1.3 Schritt 2: Arrange 327  
           6.1.4 Fazit aus den beiden Schritten 327  
           6.1.5 »MeasureOverride« und »ArrangeOverride« 328  
           6.1.6 Ein eigenes Layout-Panel (DiagonalPanel) 329  
           6.1.7 Zusammenfassung des Layoutprozesses 334  
        6.2 Layoutfunktionalität von Elementen 335  
           6.2.1 Width und Height 335  
           6.2.2 Margin und Padding 336  
           6.2.3 Margin 336  
           6.2.4 Padding 337  
           6.2.5 Alignments 338  
           6.2.6 »HorizontalAlignment« und »VerticalAlignment« 338  
           6.2.7 »HorizontalContentAlignment« und »VerticalContentAlignment« 340  
           6.2.8 Die Visibility-Property 340  
           6.2.9 Die UseLayoutRounding-Property 341  
           6.2.10 Transformationen 343  
           6.2.11 »LayoutTransform« vs. »RenderTransform« 344  
           6.2.12 »RotateTransform« 347  
           6.2.13 »ScaleTransform« 348  
           6.2.14 »SkewTransform« 350  
           6.2.15 »TranslateTransform« 350  
           6.2.16 »MatrixTransform« 351  
           6.2.17 »TransformGroup« 353  
        6.3 Panels 354  
           6.3.1 Die Klasse »Panel« 355  
           6.3.2 Canvas 356  
           6.3.3 StackPanel 359  
           6.3.4 WrapPanel 361  
           6.3.5 DockPanel 362  
           6.3.6 Grid 364  
           6.3.7 Die Höhe von Zeilen und die Breite von Spalten 366  
           6.3.8 GridSplitter 369  
           6.3.9 Geteilte Größen – »SharedSizeGroup« 373  
           6.3.10 Das Grid als Alleskönner 375  
           6.3.11 Primitive Panels 378  
           6.3.12 »UniformGrid« 378  
           6.3.13 »VirtualizingPanels« 379  
           6.3.14 TabPanel 380  
           6.3.15 ToolBarOverflowPanel 381  
           6.3.16 Übersicht der Alignments in den verschiedenen Panels 381  
           6.3.17 Wenn der Platz im Panel nicht ausreicht 383  
        6.4 Das Layout von FriendStorage 385  
           6.4.1 Das Hauptfenster aus Benutzersicht 385  
           6.4.2 Das Hauptfenster aus Entwicklersicht 388  
           6.4.3 Animation des Freunde-Explorers 396  
        6.5 Zusammenfassung 401  
     7 Dependency Properties 403  
        7.1 Die Keyplayer 404  
           7.1.1 »DependencyObject« und »DependencyProperty« 404  
           7.1.2 Was ist die Property Engine? 406  
        7.2 Dependency Properties 407  
           7.2.1 Eine Dependency Property implementieren 408  
           7.2.2 Klassische FontSize-Property 408  
           7.2.3 »FontSize« als Dependency Property 408  
           7.2.4 Metadaten einer Dependency Property 410  
           7.2.5 Die Callback-Methoden der Metadaten 414  
           7.2.6 Metadaten in Subklassen überschreiben 415  
           7.2.7 Default-Metadaten 416  
           7.2.8 Validieren einer Dependency Property 417  
           7.2.9 Die FontSize-Property als Ziel eines Data Bindings 420  
           7.2.10 Existierende Dependency Properties verwenden 422  
           7.2.11 Read-only-Dependency-Properties implementieren 424  
           7.2.12 Ermittlung des Wertes einer Dependency Property 426  
           7.2.13 Lokal gesetzte Werte löschen 428  
           7.2.14 Überblick über die Quellen mit »DependencyPropertyHelper« 430  
           7.2.15 Auf Änderungen in existierenden Klassen lauschen 430  
        7.3 Attached Properties 431  
           7.3.1 Eine Attached Property implementieren 432  
           7.3.2 Ein einfaches Panel mit Attached Properties 435  
           7.3.3 Bekannte Vertreter 439  
        7.4 Zusammenfassung 441  
     8 Routed Events 443  
        8.1 Die Keyplayer 444  
           8.1.1 Die Klassen »RoutedEvent« und »EventManager« 444  
           8.1.2 Die Routing-Strategie 445  
           8.1.3 Das Interface »IInputElement« 447  
           8.1.4 Die Klasse »RoutedEventArgs« 449  
           8.1.5 Das Event System 450  
        8.2 Eigene Routed Events 450  
           8.2.1 Ein Routed Event implementieren 451  
           8.2.2 Klassisches Click-Event 451  
           8.2.3 Click-Event als Routed Event 452  
           8.2.4 Das Routed Event als Attached Event verwenden 455  
           8.2.5 Existierende Routed Events in eigenen Klassen nutzen 457  
           8.2.6 Instanz- und Klassenbehandlung 459  
        8.3 Die »RoutedEventArgs« im Detail 463  
           8.3.1 Sender vs. Source und OriginalSource 464  
           8.3.2 Die Handled-Property 466  
        8.4 Routed Events der WPF 468  
           8.4.1 Tastatur-Events 470  
           8.4.2 Maus-Events 473  
           8.4.3 Mouse-Capturing 475  
           8.4.4 Stylus-Events (Stift) 477  
           8.4.5 Multitouch-Events 478  
           8.4.6 Die statischen Mitglieder eines FrameworkElements 481  
        8.5 Zusammenfassung 482  
     9 Commands 485  
        9.1 Die Keyplayer 486  
           9.1.1 Das Interface »ICommand« 486  
           9.1.2 Das Interface »ICommandSource« 487  
        9.2 Eigene Commands mit »ICommand« 488  
           9.2.1 Ein Command implementieren 488  
           9.2.2 Das Command verwenden 489  
           9.2.3 Das Command von der Logik entkoppeln 490  
        9.3 Die »wahren« Keyplayer 493  
           9.3.1 Die Klassen »RoutedCommand« und »RoutedUICommand« 493  
           9.3.2 Der »CommandManager« 495  
           9.3.3 Die Klasse »CommandBinding« 496  
           9.3.4 Elemente mit einer CommandBindings-Property 497  
           9.3.5 Das Zusammenspiel der Keyplayer 498  
        9.4 Eigene Commands mit der Klasse »RoutedUICommand« 501  
           9.4.1 Die eigenen Commands in FriendStorage 502  
           9.4.2 Commands mit »InputGestures« versehen 503  
           9.4.3 Die Klasse »KeyGesture« 503  
           9.4.4 Die Klasse »MouseGesture« 504  
           9.4.5 Die FriendCommands-Klasse mit InputGestures erweitern 504  
           9.4.6 CommandBindings zum Window-Objekt hinzufügen 505  
           9.4.7 Die Commands im Menü und in der ToolBar verwenden 507  
        9.5 Built-in-Commands der WPF 512  
           9.5.1 Built-in-Commands in FriendStorage 513  
           9.5.2 Bestehende Commands mit InputBindings auslösen 515  
           9.5.3 Controls mit integrierten CommandBindings 518  
        9.6 Das Model-View-ViewModel-Pattern (MVVM) 520  
           9.6.1 Die Idee des Model-View-Controller-Patterns (MVC) 521  
           9.6.2 Die Idee des Model-View-ViewModel-Patterns (MVVM) 522  
           9.6.3 Ein MVVM-Beispiel 524  
        9.7 Zusammenfassung 529  
  TEIL IIFortgeschrittene Techniken 531  
     10 Ressourcen 533  
        10.1 Logische Ressourcen 533  
           10.1.1 Logische Ressourcen definieren und verwenden 534  
           10.1.2 Die Suche nach Ressourcen im Detail 537  
           10.1.3 Die Suche im Application-Objekt 538  
           10.1.4 Systemweite Ressourcen 538  
           10.1.5 Elemente als Ressourcen verwenden 541  
           10.1.6 Statische Ressourcen 544  
           10.1.7 Dynamische Ressourcen 546  
           10.1.8 Ressourcen in separate Dateien auslagern 550  
           10.1.9 Logische Ressourcen in FriendStorage 553  
        10.2 Binäre Ressourcen 556  
           10.2.1 Binäre Ressourcen im .NET Framework 556  
           10.2.2 Binäre Ressourcen bei der WPF 559  
           10.2.3 Die Pack-URI-Syntax 562  
           10.2.4 Auf Dateien im Anwendungsverzeichnis zugreifen 563  
           10.2.5 In C# auf binäre Ressourcen zugreifen 564  
           10.2.6 Lokalisierung von WPF-Anwendungen 567  
           10.2.7 Generelle Lokalisierung mit ResourceManager 568  
           10.2.8 WPF-Anwendungen mit LocBaml lokalisieren 569  
           10.2.9 Schritt 1: Default-Kultur für das Projekt definieren 570  
           10.2.10 Schritt 2: Die Elemente in XAML mit Lokalisierungs-IDs versehen 571  
           10.2.11 Schritt 3: Weitere Satellite-Assemblies mit LocBaml erstellen 572  
           10.2.12 Der Test 576  
           10.2.13 Eine binäre Ressource als Splashscreen 577  
        10.3 Zusammenfassung 580  
     11 Styles, Trigger und Templates 583  
        11.1 Styles 583  
           11.1.1 Grundlagen und Keyplayer 584  
           11.1.2 Styles als logische Ressourcen definieren 587  
           11.1.3 Einen Style für verschiedene Typen verwenden 590  
           11.1.4 Bestehende Styles erweitern 593  
           11.1.5 Setter und EventSetter 595  
           11.1.6 Styles und Trigger 598  
        11.2 Trigger 598  
           11.2.1 Property-Trigger 599  
           11.2.2 Die Reihenfolge der Trigger 601  
           11.2.3 »EnterActions« und »ExitActions« aus »TriggerBase« 603  
           11.2.4 DataTrigger 604  
           11.2.5 EventTrigger 606  
           11.2.6 »EventTrigger« und »FrameworkElement« 608  
           11.2.7 Komplexe Bedingungen mit Triggern 611  
           11.2.8 Logisches Oder 611  
           11.2.9 Logisches Und 611  
        11.3 Templates 613  
           11.3.1 Arten von Templates 613  
           11.3.2 Layout mit dem ItemsPanelTemplate 614  
           11.3.3 Daten mit DataTemplates visualisieren 615  
           11.3.4 Das Aussehen von Controls mit ControlTemplates anpassen 619  
           11.3.5 Das Default-ControlTemplate eines Controls 622  
           11.3.6 Die Verbindung zwischen Control und Template 626  
           11.3.7 Der Inhalt von ContentControls 628  
           11.3.8 Die Items von ItemsControls 629  
           11.3.9 Two-Way-Contract zwischen Control und Template 630  
           11.3.10 VisualStateManager statt Trigger verwenden 634  
           11.3.11 Ein Template mit Visual States implementieren 636  
           11.3.12 Zustandsübergänge mit Transitions definieren 639  
           11.3.13 Das komplette Template im Überblick 641  
           11.3.14 Templates in C# 645  
        11.4 Styles, Trigger und Templates in FriendStorage 646  
           11.4.1 Der Next-Button 646  
           11.4.2 Die Image-Objekte der Toolbar-Buttons 649  
           11.4.3 Die DataGridRows des Freunde-Explorers 651  
        11.5 Zusammenfassung 653  
     12 Daten 657  
        12.1 Data Binding 658  
           12.1.1 Data Binding in XAML 658  
           12.1.2 Data Binding in C# 658  
           12.1.3 Die Binding-Klasse im Detail 660  
           12.1.4 Der DataContext 663  
           12.1.5 Die Path-Property im Detail 665  
           12.1.6 Die Richtung des Bindings 667  
           12.1.7 Der UpdateSourceTrigger 669  
           12.1.8 Die Delay-Property des Bindings 670  
           12.1.9 Die BindingExpression 671  
           12.1.10 Bindings entfernen 673  
           12.1.11 Debugging von Data Bindings 673  
        12.2 Datenquellen eines Data Bindings 676  
           12.2.1 Binding an die Dependency Properties eines Elements 676  
           12.2.2 Binding an einfache .NET-Properties 677  
           12.2.3 INotifyPropertyChanged mit C# 6.0 679  
           12.2.4 »INotifyPropertyChanged« mit dem CallerMemberName-Attribut 681  
           12.2.5 Binding an statische Properties 681  
           12.2.6 Binding an logische Ressourcen 684  
           12.2.7 Binding an Quellen unterschiedlichen Typs 685  
           12.2.8 Binding an relative Quellen mit »RelativeSource« 688  
           12.2.9 Mit dem Mode »Self« an eine Property des Target-Elements binden 688  
           12.2.10 »TemplatedParent« für Templates 689  
           12.2.11 Mit »FindAncestor« an im Element Tree höher liegende Elemente binden 689  
           12.2.12 Mit »PreviousData« an das vorhergehende Datenobjekt binden 690  
           12.2.13 Binding der Target-Property an mehrere Quellen 690  
           12.2.14 Die Klasse »MultiBinding« 691  
           12.2.15 Die Klasse »PriorityBinding« 693  
           12.2.16 DataSourceProvider für Objekte und XML 695  
           12.2.17 Die Subklasse »ObjectDataProvider« 695  
           12.2.18 Die Subklasse »XmlDataProvider« 697  
           12.2.19 Binding an XLinq 702  
        12.3 Data Binding an Collections 703  
           12.3.1 Der Fallback-Mechanismus 703  
           12.3.2 Die CollectionViews der WPF 706  
           12.3.3 Das Interface »ICollectionView« 707  
           12.3.4 Klassen, die »ICollectionView« implementieren 709  
           12.3.5 Die DefaultView 711  
           12.3.6 Daten filtern, sortieren und gruppieren 712  
           12.3.7 Das Filtern, Sortieren und Gruppieren in C# 713  
           12.3.8 Das Filtern, Sortieren und Gruppieren in XAML 717  
           12.3.9 »Live Shaping« von Daten 718  
           12.3.10 Hinzufügen und Löschen von Daten 720  
           12.3.11 Collections auf Worker-Threads bearbeiten 721  
           12.3.12 Mehrere Collections als Datenquelle verwenden 722  
           12.3.13 Binding an ein ADO.NET-DataSet 723  
        12.4 Benutzereingaben validieren 727  
           12.4.1 Validieren mit »ExceptionValidationRule« 729  
           12.4.2 Validieren mit »DataErrorValidationRule« 730  
           12.4.3 Validieren mit »NotifyDataErrorValidationRule« 732  
           12.4.4 Validieren mit eigener ValidationRule 735  
           12.4.5 Die Validation-Klasse 737  
           12.4.6 Validieren mehrerer Bindings mit »BindingGroup« 739  
           12.4.7 Validieren mit der BindingGroup 740  
           12.4.8 Transaktionen mit der BindingGroup 746  
        12.5 Das DataGrid 748  
           12.5.1 Die verwendeten Testdaten 749  
           12.5.2 Autogenerieren von Columns 751  
           12.5.3 Unterschiedliche Column-Typen 753  
           12.5.4 Columns manuell zum DataGrid hinzufügen 755  
           12.5.5 Die Breite einer Column 757  
           12.5.6 Columns mit der Klasse »DataGridTemplateColumn« 759  
           12.5.7 RowDetails anzeigen 761  
           12.5.8 Daten gruppieren 762  
           12.5.9 Die Auswahlmöglichkeiten festlegen 764  
           12.5.10 Auf ausgewählte Daten zugreifen 765  
           12.5.11 Bearbeiten von Daten 766  
           12.5.12 Daten im DataGrid validieren 767  
           12.5.13 Sonstige Eigenschaften des DataGrids 771  
        12.6 Daten mit DataTemplates visualisieren 772  
           12.6.1 Auswahl mit der Klasse »DataTemplateSelector« 772  
           12.6.2 Hierarchische DataTemplates 775  
        12.7 Drag-&-Drop 777  
        12.8 Daten in FriendStorage 781  
           12.8.1 Die Entitäten »Friend«, »Address« und »FriendCollection« 782  
           12.8.2 Daten im MainWindow 782  
           12.8.3 Der Freunde-Explorer 784  
           12.8.4 Die Detailansicht 785  
           12.8.5 Previous/Next-Buttons zur Navigation 786  
           12.8.6 Data Binding mit Fallback-Mechanismus 787  
           12.8.7 Validierung des Vornamens 788  
           12.8.8 Droppen eines Bildes 790  
           12.8.9 Die StatusBar 791  
           12.8.10 Daten im NewFriendDialog 792  
           12.8.11 Speichern in gezippter .friends-Datei 795  
        12.9 Zusammenfassung 796  
  TEIL IIIReichhaltige Medien und eigene Controls 799  
     13 2D-Grafik 801  
        13.1 Shapes 802  
           13.1.1 Das Rectangle 803  
           13.1.2 Die Ellipse 804  
           13.1.3 Linien mit »Line« und »Polyline« 804  
           13.1.4 Spezielle Formen mit »Polygon« 806  
           13.1.5 Ein Außerirdischer aus Shapes 809  
           13.1.6 Die StrokeXXX-Properties der Shape-Klasse 810  
           13.1.7 Komplexe Shapes mit »Path« 813  
        13.2 Geometries 814  
           13.2.1 »RectangleGeometry« und »EllipseGeometry« 815  
           13.2.2 »LineGeometry« 817  
           13.2.3 Mehrere Geometry-Objekte gruppieren 817  
           13.2.4 Geometries kombinieren 818  
           13.2.5 Komplexe Formen mit »PathGeometry« 819  
           13.2.6 Die Klasse »StreamGeometry« 822  
           13.2.7 Die Path-Markup-Syntax 823  
           13.2.8 Clipping mit Geometry-Objekten 825  
        13.3 Drawings 825  
           13.3.1 »GeometryDrawing« und »DrawingGroup« 826  
           13.3.2 »ImageDrawing« und »VideoDrawing« 828  
           13.3.3 Ein Außerirdischer aus Geometries und Drawings 829  
        13.4 Programmierung des Visual Layers 832  
           13.4.1 Die Klasse »DrawingContext« 832  
           13.4.2 DrawingVisual einsetzen 834  
           13.4.3 Visual-Hit-Testing 836  
        13.5 Brushes 837  
           13.5.1 Der »SolidColorBrush« und die Color-Struktur 838  
           13.5.2 Farbverläufe mit GradientBrushes 840  
           13.5.3 TileBrushes 844  
        13.6 Cached Compositions 849  
           13.6.1 BitmapCache für ein Element aktivieren 850  
           13.6.2 Nebeneffekte des Cachings 851  
           13.6.3 Elemente mit »BitmapCacheBrush« zeichnen 854  
        13.7 Effekte 856  
           13.7.1 Die Effect-Klassen 856  
           13.7.2 »Blur« und »DropShadow« verwenden 857  
           13.7.3 Properties von »BlurEffect« und »DropShadowEffect« 858  
           13.7.4 Effekte mit eigenen Pixelshadern 859  
           13.7.5 Schritt 1: Den Pixelshader erstellen 859  
           13.7.6 Schritt 2: Den Pixelshader kompilieren 862  
           13.7.7 Schritt 3: Die .ps-Datei zum Projekt hinzufügen 864  
           13.7.8 Schritt 4: ShaderEffect-Subklasse erstellen 865  
           13.7.9 Schritt 5: Den erstellten Effekt einsetzen 867  
           13.7.10 Pixelshader mit weiteren Konstanten 868  
        13.8 Bitmaps 871  
           13.8.1 BitmapSources – Bildquellen 871  
           13.8.2 Bitmap-Operationen 872  
           13.8.3 Bitmap-Operationen in FriendStorage 873  
        13.9 Zusammenfassung 874  
     14 3D-Grafik 877  
        14.1 3D im Überblick 878  
           14.1.1 Inhalte einer 3D-Szene 878  
           14.1.2 2D und 3D im Vergleich 879  
        14.2 Die Objekte einer 3D-Szene im Detail 881  
           14.2.1 Das 3D-Koordinatensystem 881  
           14.2.2 Der Viewport3D als Fernseher 882  
           14.2.3 Die richtige Kamera 883  
           14.2.4 Visual3D-Objekte 888  
           14.2.5 Model3D-Objekte 889  
           14.2.6 »GeometryModel3D« aufbauen 890  
           14.2.7 Licht ins Dunkel bringen 896  
           14.2.8 Transformationen 899  
           14.2.9 Verschiedene Materialien 901  
           14.2.10 Texturen 903  
           14.2.11 Normalen 906  
        14.3 Benutzerinteraktion mit 3D-Objekten 910  
           14.3.1 Interaktivität in WPF 3.0 mit Visual-Hit-Testing 910  
           14.3.2 Interaktivität in WPF 3.5 mit »UIElement3D« 911  
           14.3.3 Interaktive 2D-Elemente auf 3D-Objekten in WPF 3.5 913  
        14.4 Komplexe 3D-Objekte 915  
           14.4.1 Landschaft im Code generieren 915  
           14.4.2 Kugel erstellen 917  
           14.4.3 Komplexe 3D-Objekte mit Third-Party-Tools erstellen 919  
        14.5 Zusammenfassung 920  
     15 Animationen 923  
        15.1 Animationsgrundlagen 924  
           15.1.1 Voraussetzungen für Animationen 924  
           15.1.2 Übersicht über die Animationsarten und -klassen 925  
           15.1.3 Timelines und Clocks 928  
           15.1.4 Das Interface »IAnimatable« 930  
        15.2 Basis-Animationen in C# 932  
           15.2.1 Start- und Zielwert mit »From«, »To« und »By« 932  
           15.2.2 Animation nur mit »To« 934  
           15.2.3 Animation nur mit »From« 935  
           15.2.4 Animation mit »From« und »By« 935  
           15.2.5 Dauer, Startzeit und Geschwindigkeit 936  
           15.2.6 Rückwärts und Wiederholen 938  
           15.2.7 Die Gesamtlänge einer Timeline 940  
           15.2.8 Wiederholen mit neuen Werten 940  
           15.2.9 Beschleunigen und Abbremsen 942  
           15.2.10 Das Füllverhalten einer Animation 943  
           15.2.11 Eine Animation mit »AnimationClock« steuern 945  
           15.2.12 Animationen in FriendStorage 949  
        15.3 Basis-Animationen in XAML 950  
           15.3.1 Eine einfache Animation in XAML 952  
           15.3.2 Das Storyboard als Timeline-Container 956  
           15.3.3 Animationen mit »ControllableStoryboard« steuern 959  
        15.4 Keyframe-Animationen 961  
           15.4.1 Lineare Keyframe-Animationen 962  
           15.4.2 SplineKeyframe-Animationen 965  
           15.4.3 Animationen mit diskreten Keyframes 966  
        15.5 Pfad-Animationen 970  
        15.6 Easing Functions 972  
           15.6.1 Grundlagen der Easing Functions 972  
           15.6.2 Easing Functions in Basis-Animationen 976  
           15.6.3 Easing Functions in Keyframe-Animationen 978  
           15.6.4 Eigene Easing Functions erstellen 980  
        15.7 Low-Level-Animationen 982  
        15.8 Zusammenfassung 985  
     16 Audio und Video 987  
        16.1 Audio (.wav) mit »SoundPlayerAction« und »SoundPlayer« 987  
           16.1.1 Audio mit »SoundPlayerAction« (XAML) 988  
           16.1.2 Audio mit »SoundPlayer« (C#) 989  
        16.2 Audio und Video mit »MediaPlayer« (C#) 991  
           16.2.1 Einfaches Abspielen 991  
           16.2.2 Audio mit dem MediaPlayer 992  
           16.2.3 Videos abspielen 992  
           16.2.4 Steuerung mit »MediaClock« und »MediaTimeline« 994  
        16.3 Audio und Video mit »MediaElement« (XAML) 998  
           16.3.1 Einfaches Abspielen 998  
           16.3.2 Steuerung mit Methoden (unabhängiger Modus) 1000  
           16.3.3 Steuerung mit »MediaTimeline« (Clock-Modus) 1000  
           16.3.4 Storyboard mit »MediaTimeline« und »AnimationTimeline« 1003  
           16.3.5 Snapshots von Videos 1005  
        16.4 Zusammenfassung 1007  
     17 Eigene Controls 1009  
        17.1 Custom Controls 1010  
           17.1.1 Die Struktur eines Custom Controls 1011  
           17.1.2 Der zu erstellende VideoPlayer 1013  
           17.1.3 Klassenname anpassen 1014  
           17.1.4 Template-Parts definieren 1015  
           17.1.5 Dependency Properties erstellen 1018  
           17.1.6 Routed Events implementieren 1022  
           17.1.7 Commands unterstützen 1023  
           17.1.8 Das Aussehen des lookless Controls festlegen 1027  
           17.1.9 Das Control testen 1031  
           17.1.10 Optional weitere Theme-Styles anlegen 1033  
           17.1.11 Templates auf Windows-Ebene definieren 1036  
        17.2 Custom Control mit Visual States 1040  
           17.2.1 Visual States im Code implementieren 1040  
           17.2.2 States für andere sichtbar machen 1043  
           17.2.3 States im Default-ControlTemplate unterstützen 1044  
           17.2.4 Den VideoPlayer mit Visual States testen 1046  
        17.3 User Control 1047  
           17.3.1 Die Struktur eines User Controls 1047  
           17.3.2 Das zu erstellende PrintableFriend-Control 1049  
           17.3.3 UI des Controls definieren 1050  
           17.3.4 Properties in der Codebehind-Datei erstellen 1051  
           17.3.5 Die Content-Property festlegen 1053  
        17.4 Alternativen zu Custom Control und User Control 1054  
           17.4.1 Wann sollte man die OnRender-Methode überschreiben? 1054  
           17.4.2 Adorner erstellen und Elemente damit ausschmücken 1054  
        17.5 Zusammenfassung 1060  
     18 Text und Dokumente 1063  
        18.1 Text 1064  
           18.1.1 »FrameworkContentElement« als Basis für Text 1064  
           18.1.2 Formatierung mit Spans 1066  
           18.1.3 Formatierung mit den Properties aus »TextElement« 1068  
           18.1.4 Elemente im Text mit »InlineUIContainer« 1070  
           18.1.5 Fonts und Typefaces 1071  
           18.1.6 Typografie 1072  
           18.1.7 Die FormattedText-Klasse 1073  
           18.1.8 Texteffekte 1075  
           18.1.9 Nützliche Eigenschaften der TextBlock-Klasse 1076  
        18.2 Das Text-Rendering beeinflussen 1078  
           18.2.1 Kleine Zeichen sind schlecht lesbar 1079  
           18.2.2 Die Schrift führt beim Animieren zu Performance-Problemen 1080  
           18.2.3 Der Algorithmus für das Anti-Aliasing lässt sich nicht festlegen 1080  
           18.2.4 Der ClearType-Algorithmus greift nicht immer 1081  
        18.3 Flow-Dokumente 1083  
           18.3.1 Die Klasse »FlowDocument« 1083  
           18.3.2 Die fünf Block-Arten 1086  
           18.3.3 Die AnchoredBlocks »Figure« und »Floater« 1090  
           18.3.4 Controls zum Betrachten 1093  
        18.4 Annotationen 1095  
        18.5 XPS-Dokumente (Fixed-Dokumente) 1099  
           18.5.1 FlowDocument als XPS speichern 1100  
           18.5.2 Ein XPS-Dokument laden und anzeigen 1103  
           18.5.3 Die Inhalte eines XPS-Dokuments 1105  
           18.5.4 XPS in C# mit FixedDocument & Co. erstellen 1109  
        18.6 Drucken 1111  
           18.6.1 Einfaches Ausdrucken 1111  
           18.6.2 Drucken mit »PrintQueue« 1113  
           18.6.3 Festlegen von Druckeigenschaften mit »PrintTicket« 1114  
           18.6.4 Drucken mit »PrintDialog« 1114  
        18.7 Dokumente in FriendStorage 1116  
           18.7.1 Hilfe mit Flow-Dokument 1116  
           18.7.2 Export der Freundesliste als XPS 1117  
           18.7.3 Drucken der Freundesliste 1121  
        18.8 Zusammenfassung 1122  
  TEIL IVInteroperabilität und Apps 1125  
     19 Standard-Dialoge, Windows Taskbar und mehr 1127  
        19.1 Standard-Dialoge 1127  
           19.1.1 Der SaveFileDialog 1128  
           19.1.2 Der OpenFileDialog 1128  
        19.2 Integration in die Windows Taskbar 1129  
           19.2.1 Übersicht der Möglichkeiten 1130  
           19.2.2 Thumb-Buttons im Vorschaufenster 1131  
           19.2.3 Ein Overlay-Bild auf dem Taskbar-Button 1135  
           19.2.4 Eine Fortschrittsanzeige auf dem Taskbar-Button 1136  
           19.2.5 Den Ausschnitt im Thumbnail festlegen 1138  
           19.2.6 Eine JumpList mit JumpTasks 1139  
           19.2.7 JumpList mit JumpTasks und JumpPaths 1140  
           19.2.8 JumpList mit letzten und häufigen Elementen 1142  
        19.3 Deployment 1144  
        19.4 Zusammenfassung 1145  
     20 Interoperabilität 1147  
        20.1 Unterstützte Szenarien und Grenzen 1147  
           20.1.1 Mögliche Interoperabilitätsszenarien 1148  
           20.1.2 Grenzen und Einschränkungen 1149  
        20.2 Windows Forms 1150  
           20.2.1 Windows Forms in WPF 1150  
           20.2.2 WPF in Windows Forms 1158  
           20.2.3 Dialoge 1160  
           20.2.4 Windows-Forms-Dialoge aus WPF öffnen 1160  
           20.2.5 WPF-Dialoge aus Windows Forms öffnen 1161  
        20.3 ActiveX in WPF 1163  
        20.4 Win32 1165  
           20.4.1 Win32 in WPF 1165  
           20.4.2 WPF in Win32 1176  
           20.4.3 Dialoge 1180  
           20.4.4 Win32-Dialoge aus WPF öffnen 1180  
           20.4.5 WPF-Dialoge aus Win32 öffnen 1184  
           20.4.6 Win32-Nachrichten in WPF abfangen 1185  
        20.5 Direct3D in WPF 1187  
           20.5.1 Voraussetzungen und Konfiguration 1188  
           20.5.2 Die Direct3D-Oberfläche integrieren 1189  
        20.6 Zusammenfassung 1192  
     21 Universal Windows Apps in Windows 10 1195  
        21.1 Einführung 1195  
           21.1.1 Windows Store Apps in Windows 8 1195  
           21.1.2 Universal Apps in Windows 8.1 1197  
           21.1.3 Universal Windows Apps in Windows 10 1198  
           21.1.4 Universal Windows Apps vs. WPF 1199  
        21.2 Die FriendViewer-App erstellen 1200  
           21.2.1 Die Tools installieren 1201  
           21.2.2 Das Projekt angelegen 1201  
           21.2.3 Projekt-Struktur und Dateien 1202  
           21.2.4 Die MainPage befüllen 1204  
           21.2.5 Visuelle Zustände für adaptives Layout 1209  
           21.2.6 Wie geht es weiter? 1213  
        21.3 Zusammenfassung 1213  
  Index 1215  

Kategorien

Service

Info/Kontakt

  Info
Hier gelangen Sie wieder zum Online-Auftritt Ihrer Bibliothek