DataBindung mit WPF
Download
Report
Transcript DataBindung mit WPF
DatenBinding mit WPF
Holger Mester
Agenda
Einführung
Grundlagen des DataBindings
Quelle/Ziel
Interaktionsmodus
Einfaches Binden
Behandeln von Änderungen
Konvertierung von Daten
Validierung von Daten
Binden von Collections
Collection Views
Master-Detail User Interfaces
Data Templates
Debuggen von DataBindings
Weitere Informationen
2
16.02.2009
Die Windows Presentation Foundation (WPF)
WPF sind .NET-Framework-Klassen, die es erlauben ansprechende
und funktionale Oberflächen für Windows-basierende Systeme zu
erstellen
Oberflächen werden mit DirectX gerendert
Trennung von Oberfläche und Code
XAML (Markup) für die Oberflächen (Designer)
C# oder VB.NET (Managed Code) für die Logik (Entwickler)
Kann als Windows- oder Web-UI entwickelt werden
Austausch von:
Sitzungsdaten
Eigenschaften
Ressourcen
2D-, 3D- und Animationsdarstellung
Entwickler
Designer
3
16.02.2009
Was ist DataBinding
Ansatz, um in einer Applikation Daten darzustellen und mit ihnen zu
interagieren
Daten können aus verschiedenen Datenquellen an ein
Steuerelement gebunden werden
Datenbank (ADO.NET)
XML-Datei
CLR-Objekte
UI-Elemente
4
16.02.2009
Was ist DataBinding
WPF-DataBindung benötigt:
Zielobjekt mit Zieleigenschaften (Target object)
Quellobjekt (Source object)
Bindingobjekt
Zielobjekt muss DataBinding unterstützen
Quellobjekt ist eine beliebige Datenquelle
Bindingobjekt legt fest, wie Ziel und Quelle interagieren
Zielobjekt
5
Bindingobjekt
16.02.2009
Quellobjekt
Interaktionmodus zwischen Quelle und Ziel
One Way
Ändert sich das Quellobjekt, wird automatisch das Zielobjekt
aktualisiert
Änderungen an der Quelle werden nicht zum Ziel durchgereicht
Two Way
Wird Quelle oder Ziel geändert, ändert sich der Gegenpart
One Way to Source
Die Quelle wird automatisch aktualisiert, wenn sich Daten im Ziel
geändert werden
One Time
Ziel wird nur beim ersten
Einlesen der Quelle geändert
Zielobjekt
Zielobjekt
Zielobjekt
6
Bindingobjekt
Bindingobjekt
Bindingobjekt
16.02.2009
Quellobjekt
Quellobjekt
Quellobjekt
Binden an eine Source-Eigenschaft
Ein Objekt wird durch die Angabe einer Ressource als SourceEigenschaft (Property) an ein Control gebunden
Beispiele:
Ein Objekt wird in den Ressourcen des Elternobjektes (siehe
VisualTree) definiert
Wird das Objekt im DataContext des Elternobjektes gebunden,
kann im Zielobjekt ein leerer Binding-Syntax verwendet werden
7
16.02.2009
Binden an ein anderes Steuerelement
Die ElementName-Eigenschaft eines Steuerelements kann an ein
anderes gebunden werden
Durch das Binden wird der DataContext vom Eltern-Objekt vererbt
Mit dem ElementName wird die Quelle einer Datenbindung
geändert, der geerbte DataContext wird überschrieben
Beispiel
8
Die Background-Eigenschaft eines Canvas wird durch Benutzung von
ElementName an die SelectedItem-Eigenschaft einer ComboBox gebunden
16.02.2009
Die Change-Notification-Eigenschaft
Die Change-Notification-Eigenschaft sorgt dafür, dass sich
Änderungen auf der UI zum Objekt durchschlagen
Arten der Change Notification
PropertyChanged: Quell-Daten werden geändert, wenn sich
Daten im Ziel-Objekt ändern, z. B. Check- oder Radiobuttons
LostFocus: Quell-Daten werden aktualisiert, wenn das Ziel-Objekt
seinen Fokus verliert, z. B. Eingabe-Controls wie Textboxen
Explicit: Quell-Daten werden nur dann aktualisiert, wenn das Ziel
eine Aktualisierung explizit zulässt, z. B. nach der
Eingabevalidierung
Kann nur mit den Interaktionsmodus TwoWay und OneWayToSource
verwendet werden
9
16.02.2009
Datenkonvertierung
Datentypen von Quelle und Ziel müssen kompatibel sein
Weichen die Datentypen ab, versucht die WPF diese automatisch zu
konvertieren
Beispiel: Die Farbe im Beispielobjekt ist ein String > die ForegroundEigenschaft eines Controls erwartet ein Brush-Typ
Schlägt die Konvertierung fehl, wird ein Fehler ausgegeben
10
16.02.2009
Eigener Datenkonvertierer
Sind Konvertierungen seitens WPF nicht möglich, wird ein eigener
Konverter implementiert
Ein eigener Konverter implementiert IValueConverter
Beinhaltet die Methoden Convert() und ConvertBack()
Der Konverter muss der Applikation bekannt gemacht werden
11
Erzeugen eines Ressourcen-Wörterbuchs
Verknüpfen des Wörterbuchs mit der Applikation in der App.xaml
Aufruf des Konverters beim Zielobjekt
16.02.2009
Validierung von Daten
Daten werden vor dem Senden an die Quelle auf Richtigkeit geprüft
Im Binding-Objekt werden die Prüfungsrichtlinien festgelegt
(Validation rules)
Sendet der Benutzer seine Daten, werden diese zuerst geprüft
Schlägt die Prüfung fehl, wird eine Meldung an das Ziel geschickt
War die Prüfung erfolgreich, werden die Daten zur Quelle geschickt
12
Ist ein Konverter vorhanden, werden die Daten vorher gewandelt
16.02.2009
Binden von Collections
Collections beinhalten eine Gruppe von Daten, die in
entsprechenden Steuerelementen dargestellt werden
Collections, die gebunden werden sollen, müssen das IEnumerableInterface implementieren
Änderungen (sowohl an der Quelle als auch am Ziel) werden durchgereicht
Für Änderungen muss das INotifyCollectionChanged-Interface
implementiert werden
Collection mit INotifyCollectionChagend-Interface sind obserable
13
Änderungen werden unverzüglich durchgereicht
16.02.2009
Verwenden von Collection Views
Collection Views erlauben
Sortieren
Filtern
Gruppieren der Daten einer Collection
Collection Views werden wie Collections gebunden
Mehrere Collection Views können zu einer zusammengefasst
werden
Daten können ohne erneute Abfrage der Quelle reorganisiert
werden
14
16.02.2009
Master-Details User Interfaces
Bestehen aus einem Steuerelement-Paar
Master Control
Detail Control
Master:Detail bilden eine 1:n Beziehung
Master-Detail UI wird durch Binden mehrerer Steuerelemente an die
gleiche Datenquelle erzeugt
15
16.02.2009
Verwenden von Data Templates
Data Templates erlauben die Definition der Anzeige von Daten in
Abhängigkeit des Kontextes
Beispiel: Positive Zahlungseingänge werden schwarz, negative rot dargestellt
Data Templates werden als Ressource im Parent Element des
Gültigkeitsbereichs definiert
Sie werden durch Trigger ausgelöst
16
16.02.2009
Debugging von DataBindings
DataBindings werfen keine Exception
Lediglich Fehleranzeige im Ausgabefenster des Visual Studio
Seit WPF 3.5 kann die Klasse PresentationTraceSource gesetzt
werden
CLR-Namespace auf System.Diagnostics setzen
Tracelevel beim Binding-Object setzen
Umfangreichste Anzeige im Ausgabefenster mit High
17
16.02.2009
Weitere Informationen
Literatur
.NET 3.0 – WCF, WPF und WF, Ein Überblick
Zielgruppe: Einsteiger
Preis: 7,95 €, Wertung:
Windows Presentation Foundation – Das umfassende Handbuch
Zielgruppe: Fortgeschrittene
Preis: 49,90 €, Wertung:
WPF und XAML-Programmierhandbuch
18
Zielgruppe: Experten
Preis: 49,90 €, Wertung:
16.02.2009
Weitere Informationen
Literatur
Windows Presentation Foundation
Zielgruppe: Einsteiger
Preis: 9,95 €, Wertung:
*
User-Interface-Design mit Microsoft Expression Blend 2
Zielgruppe: Fortgeschrittene (Designer)
Preis: 39,90 €, Wertung:
*
Windows Presentation Foundation (.NET WPF)
Zielgruppe: Einsteiger
Preis: 44,90 €, Wertung:
*
* Wertung bei Amazon.de
19
16.02.2009
Weitere Informationen
Internet-Ressourcen
WPF Data Binding Tutorial auf core.net
WPF intim auf IT-Republic.de
WPF-Blogger
Vorlagen für ungewöhnliche Steuerelemente auf MSDN
How Do I-Videos zur WPF
Windows Presentation Foundation FAQ auf MSDN
Fluent Ribbon Control Suite auf Codeplex
20
16.02.2009
Weitere Informationen
Der Blick über den Tellerrand
21
Eclipse XML Windowing Toolkit
Android
16.02.2009
Weitere Informationen
Neuerungen in WPF 3.5 SP1
Performance
Animationen laufen schneller und flüssiger
Scrollen in Steuerelementen mit vielen Daten ohne Wartezeiten
Verbesserungen bei Darstellung von Grafiken
Datenverwaltung
Neue Eigenschaften in Klasse ItemsControl
IEditableCollectionView: lässt das Bearbeiten von Items in einem
CollectionView-fähigen Steuerelement zu
Visual Studio
22
AlternationCount: Berechnung der Anzahl alternierender Zahlen
AlternationIndex: Dependency Property, die pro Item einen Wert zwischen 0 und
AlternationCount besitzt
Performance-Verbesserungen
Verbesserte Verwendung von Controls im Designer
Alphabetische Sortierung von Eigenschaften im Eigenschaften-Dialog
16.02.2009
Glossar
Binding
Control (Steuerelement)
Ist ein Interaktionselement in einer grafischen Benutzeroberfläche (GUI),
wie z. B. eine Schaltfläche (Button).
Dependency Properties
Ist eine Prozess oder eine Methode, ein Steuerelement so zu konfigurieren,
dass es sich seine Daten aus einer Quelle holen und sie zurückschreiben
kann.
Sind durch klassische .NET-Eigenschaften (Properties) gekapselt. Sie stellen
einen Schlüssel zum eigentlichen Wert dar.
DirectX
23
Ist eine API von Microsoft zur Darstellung von hochauflösenden Grafiken,
Videos, 3D-Animationen und Sourround Sound
16.02.2009
Glossar
Dispatcher
Element tree
Ein Eventhandler ist eine Methode, die an einen speziellen Event geknüpft
ist.
Event
WPF-Elemente stehe in einer Baum (Tree)-Relation zu einander. Man
unterscheidet zwischen Logical- und Visual-Tree.
Event Handler
WPF-Applikation starten mit zwei Threads: einen zum Rendern und der
andere zum Verwalten der GUI. Der GUI-Thread „parkt“ die Workitems in
einem Objekt, das Dispatche genannt wird.
Ein Event ist eine Aktion, wie z. B. das Klicken der Maustaste.
Extensible Markup Language (XAML)
24
Ist eine Markup-Sprache zur deklarativen Applikationsentwicklung.
16.02.2009
Glossar
Observable Collections
Eine Observable Collection beinhaltet eine Collection und ein
INotifyCollectionChanged-Interface.
Template Binding
25
Verlinkt den Wert einer Eigenschaft eines Steuerelements mit dem in einem
Template festgelegten Wert. Damit kann das Aussehen und Verhalten
(Behavior) eines Steuerelements zentral festgelegt und gesteuert werden.
16.02.2009