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