Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt

11
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt Kapitel 5 Data Binding

description

Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt. Kapitel 5 Data Binding. Dependency Properties s.a. http://msdn.microsoft.com/en-gb/library/ms752914.aspx - PowerPoint PPT Presentation

Transcript of Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt

Page 1: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation WS 2013/14Prof. Dr. Herrad Schmidt

Kapitel 5

Data Binding

Page 2: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 5Folie 2

Dependency Properties

s.a. http://msdn.microsoft.com/en-gb/library/ms752914.aspx

Dependency Properties stellen eine Erweiterung der „klassischen“ Properties dar und bieten damit weitere Funktionalitäten:

automatische Aktualisierung der abhängigen Objekte

Property-Vererbung über den Visual Tree

eine integrierte Validierung

die Deklaration von Standardwerten

den Aufruf von Callback-Methoden, wenn Wertänderungen aufgetreten sind

Animationen

Data Binding

Styles

Attached Properties sind eine spezielle Variante der Dependency Properties. Dabei werden die Werte eines Eltern-Elements im Kind-Element gesetzt.

Page 3: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 5Folie 3

Dependency Property System

Eine Klasse die von der Klasse DependencyObject (s.a.http://msdn.microsoft.com/en-us/library/system.windows.dependencyobject(VS.100).

aspx#inheritanceContinued)erbt, kann am Dependency Property System partizipieren, kann also Dependency Properties besitzen.

Viele Properties der Controls sind Dependency Properties. Sie lassen sich aber wie „normale“ Properties nutzen, weil sie durch wrapper „versteckt“ werden.

Dependency Properties werden bei einem Element/Objekt gesetzt und gelten dann für alle untergeordneten Controls Ausnahme 1: Vererbt wird nur, wenn FrameworkPropertyMetadata.Inherits für dieses Dependency Property auch auf true gesetzt ist.Ausnahme 2: Einige Controls wie StatusBar, Menu und ToolTip setzen ihre font-Properties intern. Sie werden bestimmt durch die Einstellungen des Control Panel (Systemeinstellungen).

Page 4: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 5Folie 4

Data Binding

s.a. http://msdn.microsoft.com/en-us/library/ms752347(VS.100).aspx

Dependency Properties können an verschiedene Arten von Datenquellen gebunden werden. Bei den Daten kann es sich um CLR-Objekte oder XML-Daten handeln.s.a. http://msdn.microsoft.com/en-us/library/ms743643(VS.100).aspx

Das Benachrichtigungssystem von WPF kann die Aktualisierung von Daten automatisieren.

Modell (Quelle: s.o.) mit binding target object, target property, binding source und path to the value, data flow, UpdateSourceTrigger

Page 5: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 5Folie 5

Erstellen einer Bindung in XAML

unter Verwendung der Markuperweiterung Binding

Angabe der Bindungsquelle mittels einer der Alternativen: ElementName (Bindung an andere Elemente) Source (in einzelnen Bindungsdeklarationen) DataContext (für das jeweilige Element oder ein übergeordnetes) RelativeSource (Quelle relativ zum Ziel, z.B. Self)

Angabe des Pfades zum Wert mittelsPath oder Xpath (XML-Daten)sofern der Wert nicht identisch ist mit dem binding source object

Evtl. setzen der Mode-Eigenschaft OneWay (default) Änderungen der source property führen

automatisch zur Änderung der target property TwoWay gegenseitige Automatisierung OneWayToSource Änderungen der target property führen

automatisch zur Änderung der source property

Page 6: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 5Folie 6

Ressourcens.a. http://msdn.microsoft.com/en-us/library/ms750613(VS.100).aspx

WPF-Ressourcen erlauben die Wiederverwendung von Objekten und Werten.

Binäre Ressourcen: Dateien, die Bilder, Musik, Videos in Form von binären Datenströmen enthalten, und in die Assembly der Applikation eingebettet werden, z.B. <image Source=“Images/Bild.jpg“ /> Logische Ressourcen: Objekte einer Klasse werden (meist in XAML) bei einem WPF-Element definiert und an verschiedenen Stellen im XAML-Dokument referenziert.Als Ressource lässt sich ein Objekt beliebiger Klassen verwenden, allerdings muss die Klasse einen parameterlosen Konstruktor besitzen.Elemente können statisch oder dynamisch (nur bei Dependency Property) auf die Ressourcen zugreifen.

Page 7: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 5Folie 7

Logische Ressourcen

Ein FrameworkElement verfügt über ein Resources-Property vom Typ ResourceDictionary. Alle abgeleiteten Controls können damit einen Resources-Abschnitt definieren, z.B.<Window.Resources>

<SolidColorBrush x:Key="MyBrush" Color=“Aqua"/>

</Window.Resources>

Logische Ressourcen in App.xaml stehen anwendungsweit zur Verfügung.

Die Ressource muss bekannt sein, bevor sie benutzt wird.

Kinderelemente können eine bestimmte Ressource mit der StaticResource- oder DynamicResource-Markup-Extension über den key der Ressource referenzieren, z.B. <Ellipse Fill="{StaticResource MyBrush}"/>

Nach der Ressource wird aufwärts im Logical Tree, danach im Application-Objekt und danach bei den systemweiten Ressourcen (SystemParameters, SystemFonts, SystemColors, theme-spezifische Ressourcen) gesucht.

Page 8: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 5Folie 8

INotifyPropertyChanged-Schnittstelle

Implementiert eine Klasse die INotifyPropertyChanged-Schnittstelle können Benachrichtigungen über Änderungen einer Property an ein gebundenes Steuerelement übermittelt werden.

Implementierung: Bildung einer Klasse, die INotifyPropertyChenged implementiert z.B. public class Artikel : INotifyPropertyChanged Deklaration des PropertyChanged event: public event PropertyChangedEventHandler PropertyChanged; Auslösen des Ereignisses, wenn sich ein Property ändert: PropertyChanged(this, new PropertyChangedEventArgs(propertyName));

Page 9: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 5Folie 9

Data Binding an Collections

Anzeige für Datenlisten: ItemsControl und abgeleitete Controls

Zum Binden von ItemsControl an ein collection object dient die Property ItemsSource.

Es kann jede collection verwandt werden, die die IEnumerable-Schnittstelle implementiert.

Um automatische Aktualisierung zu erreichen, muss die collection die INotifyPropertyChanged-Schnittstelle implementieren. Dafür stellt WPF die ObservableCollection(T)-Klasse zur Verfügung.

Zur vollständigen Aktualisierung aller Datenwerte muss auch ein Objekt in der collection die INotifyPropertyChanged-Schnittstelle implementieren.

Page 10: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 5Folie 10

Collection Views

Zwischen der Collection und dem ItemsControl liegt eine CollectionView.

Sie stellt einen Zeiger auf das aktuell selektierte Objekt (CurrentItem property) bereit. Dieses Objekt kann in einem ContentControl angezeigt werden. Voraussetzung: IsSynchronizedWithCurrentItem="True" beim ItemsControl.

Die CollectionView wird explizit vom Entwickler oder implizit von der WPF erstellt (DefaultView).

Sie realisiert Sortier-, Filter- und Gruppierungsabfragen, ohne Änderung der source collection.

Für das Filtern, Sortieren und Gruppieren in XAML wird ein CollectionViewSource-Element benutzt und an die Collection gebunden. Das ItemsControl wird an das CollectionViewSource-Element gebunden.

Page 11: Windows  Presentation Foundation WS  2013/14 Prof. Dr. Herrad Schmidt

Windows Presentation Foundation, Vorlesung Wintersemester 2013/14

Prof. Dr. Herrad SchmidtWS 13/14 Kapitel 5Folie 11

Solution 5_DataBinding

A_BindungAnSteuerelemente

B_BindungAnRessourcen

C_DataContext

D_Benachrichtigung

E_ObservableCollection

F_MasterDetail

G_Ressourcen

H_Internationalisierung