1 / 11

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

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

ronni
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Windows PresentationFoundationWS 2013/14Prof. Dr. Herrad Schmidt Kapitel 5 Data Binding

  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.

  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).

  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 bindingtargetobject, targetproperty, bindingsource und pathtothevalue, dataflow, UpdateSourceTrigger

  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

  6. Ressourcen s.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.

  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.

  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));

  9. Data Binding an Collections • Anzeige für Datenlisten: ItemsControl und abgeleitete Controls • Zum Binden von ItemsControl an ein collectionobject 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 collectiondie INotifyPropertyChanged-Schnittstelle implementieren.

  10. Collection Views • Zwischen der Collection und dem ItemsControl liegt eine CollectionView. • Sie stellt einen Zeiger auf das aktuell selektierte Objekt (CurrentItemproperty) 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 sourcecollection. • 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.

  11. Solution 5_DataBinding • A_BindungAnSteuerelemente • B_BindungAnRessourcen • C_DataContext • D_Benachrichtigung • E_ObservableCollection • F_MasterDetail • G_Ressourcen • H_Internationalisierung

More Related