Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Rainer Stropek cubido business solutions gmbh Fesselspiele Data Binding in WPF und Silverlight.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Rainer Stropek cubido business solutions gmbh Fesselspiele Data Binding in WPF und Silverlight."—  Präsentation transkript:

1 1 Rainer Stropek cubido business solutions gmbh Fesselspiele Data Binding in WPF und Silverlight

2 2 Ziele Grundlagen von Data Binding in WPF und Silverlight Erklärung von Data Binding Szenarien anhand von typischen Anwendungsfällen Hinweise auf Unterschiede bei Data Binding zwischen WPF und Silverlight Rainer Stropek, cubido business solutions gmbh

3 3 EINFACHES DATA BINDING MIT UND OHNE DEPENDENCY PROPERTIES Beispiel 1 Rainer Stropek, cubido business solutions gmbh

4 4 Grundlagen Rainer Stropek, cubido business solutions gmbh public class Competitor { public string FirstName { get; set; } public string LastName { get; set; } } public class Competitor { public string FirstName { get; set; } public string LastName { get; set; } }.property instance string FirstName {.get instance string MyApp.Competitor::get_FirstName().set instance void MyApp.Competitor::set_FirstName(string) }.property instance string FirstName {.get instance string MyApp.Competitor::get_FirstName().set instance void MyApp.Competitor::set_FirstName(string) }

5 5 Grundlagen Erstellen eines Bindings {Binding…} Markup Extension Binding Klasse {StaticResource…} Markup Extension zum Zugriff auf Ressourcen Rainer Stropek, cubido business solutions gmbh

6 6 Einfaches Data Binding Rainer Stropek, cubido business solutions gmbh Show Competitor Change Competitor Show Competitor Change Competitor

7 7 Grundlagen Rainer Stropek, cubido business solutions gmbh

8 8 Grundlagen Rainer Stropek, cubido business solutions gmbh Geschäftsobjekt TextBox TextBlock Hermann Rainer Rainer Rainer Text wird verändert Geschäftsobjekt TextBox TextBlock Hermann Rainer Text wird im Code verändert Änderung des Properties wird nicht erkannt!

9 9 Grundlagen Lösungen des Problems: Dependency Property Implementieren von INotifyPropertyChanged Rainer Stropek, cubido business solutions gmbh

10 10 Dependency Property Rainer Stropek, cubido business solutions gmbh public class Competitor : DependencyObject { public string FirstName { get { return (string)GetValue(FirstNameProperty); } set { SetValue(FirstNameProperty, value); } } public static readonly DependencyProperty FirstNameProperty = DependencyProperty.Register("FirstName", typeof(string), typeof(Competitor), new UIPropertyMetadata(String.Empty)); public string LastName { get { return (string)GetValue(LastNameProperty); } set { SetValue(LastNameProperty, value); } } public static readonly DependencyProperty LastNameProperty = DependencyProperty.Register("LastName", typeof(string), typeof(Competitor), new UIPropertyMetadata(String.Empty)); } public class Competitor : DependencyObject { public string FirstName { get { return (string)GetValue(FirstNameProperty); } set { SetValue(FirstNameProperty, value); } } public static readonly DependencyProperty FirstNameProperty = DependencyProperty.Register("FirstName", typeof(string), typeof(Competitor), new UIPropertyMetadata(String.Empty)); public string LastName { get { return (string)GetValue(LastNameProperty); } set { SetValue(LastNameProperty, value); } } public static readonly DependencyProperty LastNameProperty = DependencyProperty.Register("LastName", typeof(string), typeof(Competitor), new UIPropertyMetadata(String.Empty)); }

11 11 Grundlagen Rainer Stropek, cubido business solutions gmbh WPF übernimmt Verwaltung der Propertywerte

12 12 Grundlagen Nahezu alle Properties in WPF sind als Dependency Properties implementiert Rainer Stropek, cubido business solutions gmbh

13 13 Grundlagen Rainer Stropek, cubido business solutions gmbh

14 14 Animationsbeispiel Rainer Stropek, cubido business solutions gmbh Next Picture Next Picture

15 15 Grundlagen Rainer Stropek, cubido business solutions gmbh

16 16 Einfaches Data Binding Rainer Stropek, cubido business solutions gmbh Show Competitor Change Competitor Show Competitor Change Competitor public MyWindow() { InitializeComponent(); this.DataContext = new Competitor { FirstName = "Benjamin", LastName = "Raich" }; } public MyWindow() { InitializeComponent(); this.DataContext = new Competitor { FirstName = "Benjamin", LastName = "Raich" }; } Tipp: DataContext statt Source oder ElementName!

17 17 DATA BINDING UND COLLECTIONS Beispiel 2 Rainer Stropek, cubido business solutions gmbh

18 18 ItemsControl Klasse Binden der Collection an das Property ItemsSource Rainer Stropek, cubido business solutions gmbh Tipp: Steuern Sie das Aussehen der einzelnen Items über ein Data Template!

19 19 Binden an ItemsSource Rainer Stropek, cubido business solutions gmbh public MyWindow() { InitializeComponent(); this.DataContext = new List () { new Competitor() { FirstName = "Hermann", LastName = "Mayer" }, new Competitor() { FirstName = "Benjamin", LastName = "Raich" } }; } public MyWindow() { InitializeComponent(); this.DataContext = new List () { new Competitor() { FirstName = "Hermann", LastName = "Mayer" }, new Competitor() { FirstName = "Benjamin", LastName = "Raich" } }; } Template Binding

20 20 Binden an ItemsSource Rainer Stropek, cubido business solutions gmbh … … … … Tipp: Legen Sie Data Templates zentral in den Ressourcen ab ( Window.Resources oder App.xaml ) ComboBox und ListBox nutzen gleiches Template

21 21 Collection Hermann, Mario Binden an ItemsSource Rainer Stropek, cubido business solutions gmbh ListBox Hermann Element wird im Code hinzugefügt Änderung der Collection wird nicht erkannt! public MyWindow() { InitializeComponent(); this.DataContext = new ObservableCollection () { new Competitor() { FirstName = "Hermann", LastName = "Mayer" }, new Competitor() { FirstName = "Benjamin", LastName = "Raich" } }; } public MyWindow() { InitializeComponent(); this.DataContext = new ObservableCollection () { new Competitor() { FirstName = "Hermann", LastName = "Mayer" }, new Competitor() { FirstName = "Benjamin", LastName = "Raich" } }; } Implementiert INotifyCollectionChanged

22 22 DATA BINDING UND LINQ (ENTITY FRAMEWORK) Beispiel 3 Rainer Stropek, cubido business solutions gmbh

23 23 Beispielanwendung Rainer Stropek, cubido business solutions gmbh

24 24 Hands-on Lab Create a new WPF Application named SkiResults Add Folder Data Add Entity Model SkiEventModel in Folder Data Model Namespace is SkiResults.Data Rainer Stropek, cubido business solutions gmbh

25 25 System.Data. Objects. DataClasses Linq und Data Binding Rainer Stropek, cubido business solutions gmbh Competitor EntityObject StructuralObject INotifyPropertyChanged Linq-Klassen sind für Nutzung mit Data Binding vorbereitet

26 26 Hands-on Lab Basis-Grid zum Window hinzufügen Rainer Stropek, cubido business solutions gmbh


Herunterladen ppt "1 Rainer Stropek cubido business solutions gmbh Fesselspiele Data Binding in WPF und Silverlight."

Ähnliche Präsentationen


Google-Anzeigen