25
Microsoft Student Partners © 2012 Microsoft Corporation. Alle Rechte vorbehalten.

Datenbindung mit XAML in Windows 8

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Datenbindung mit XAML in Windows 8

Microsoft Student Partners© 2012 Microsoft Corporation. Alle Rechte vorbehalten.

Page 2: Datenbindung mit XAML in Windows 8

Wer kann das MVC-Pattern erklären?

Page 3: Datenbindung mit XAML in Windows 8

Und jetzt etwas ganz anderes: Datenbindung

Page 4: Datenbindung mit XAML in Windows 8

Bei der Datenbindung geht es darum, zwei Datenquellen bzw. -senken zu verbinden und synchron zu halten.

Page 5: Datenbindung mit XAML in Windows 8

DEMO

Page 6: Datenbindung mit XAML in Windows 8

Es gibt drei Arten der Datenbindung:One-Way (Wenn sich A ändert, ändert sich auch B)

A B

Page 7: Datenbindung mit XAML in Windows 8

Es gibt drei Arten der Datenbindung:Two-Way (Wenn sich A ändert, ändert sich B und wenn sich B ändert, ändert sich A)

A B

Page 8: Datenbindung mit XAML in Windows 8

Es gibt drei Arten der Datenbindung:One-Time (B erhält einmalig den Wert von A)

A B1x

Page 9: Datenbindung mit XAML in Windows 8

DEMO

Page 10: Datenbindung mit XAML in Windows 8

Datenbindung zwischen UI und Datenmodell

Page 11: Datenbindung mit XAML in Windows 8

string Name;

string Category;

float Rating;

int RatingCount;

ImageSource Photo;

Address Address;

string OpeningHours;

string Description;

Comment[] Comments;

Restaurant

Page 12: Datenbindung mit XAML in Windows 8

string Name;

string Category;

float Rating;

int RatingCount;

ImageSource Photo;

Address Address;

string OpeningHours;

string Description;

Comment[] Comments;

Restaurant

string Title;

float Rating;

User Author;

string Text;

Comment

Page 13: Datenbindung mit XAML in Windows 8

Jedes XAML-Steuerelement hat eine Eigenschaft „DataContext“, die auf das Datenmodell verweist.

Page 14: Datenbindung mit XAML in Windows 8

string Name;

string Category;

float Rating;

int RatingCount;

ImageSource Photo;

Address Address;

string OpeningHours;

string Description;

Comment[] Comments;

Restaurant

?

Page 15: Datenbindung mit XAML in Windows 8

Was wir bisher gesehen haben:Die View ist direkt an das Model gebunden.

Model View

Page 16: Datenbindung mit XAML in Windows 8

Das ViewModel ist eine Abstraktion der View. Es stellt Informationen aus dem Model so bereit, wie es die View benötigt. Gleichzeitig nimmt es Informationen aus der View entgegen und bringt diese in das Model ein.

Model ViewModel View

Problem-Domäne UI-Domäne

Page 17: Datenbindung mit XAML in Windows 8

Model-View-ViewModel (MVVM)

Page 18: Datenbindung mit XAML in Windows 8

string Name;

string Category;

float Rating;

int RatingCount;

ImageSource Photo;

Address Address;

string OpeningHours;

string Description;

Comment[] Comments;

Restaurant

Restaurant Restaurant;

float UserRating;

RestaurantViewModel

Page 19: Datenbindung mit XAML in Windows 8

class RestaurantViewModel{ public Restaurant Restaurant { get; private set; }

public float UserRating { get { return _userRating; }

set { _userRating = value; Restaurant.Rate(_userRating); } }}

C#

class Restaurant{ private float aggregatedRating = 0;

public float Rating { get { return aggregatedRating / RatingCount; } } public int RatingCount { get; private set; }

public void Rate(float rating) { aggregatedRating += rating; RatingCount++; }}

C#

Page 20: Datenbindung mit XAML in Windows 8

Restaurant Restaurant;

float UserRating;

RestaurantViewModel

Restaurant

string Name;

string Category;

float Rating;

int RatingCount;

ImageSource Photo;

Address Address;

string OpeningHours;

string Description;

Comment[] Comments;

Page 21: Datenbindung mit XAML in Windows 8

interface INotifyPropertyChanged{ event PropertyChangedEventHandler PropertyChanged;}

C#

Page 22: Datenbindung mit XAML in Windows 8

class Restaurant{ public void Rate(float rating) { aggregatedRating += rating; RatingCount++;

OnRatingChanged(); }

private void OnRatingChanged() { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs("Rating")); } }

public event PropertyChangedEventHandler PropertyChanged;}

C#

Page 23: Datenbindung mit XAML in Windows 8

Commands erlauben es, UI-Ereignisse (z.B. Klicks) über Datenbindung an ein ViewModel weiterzuleiten.

Page 24: Datenbindung mit XAML in Windows 8

ValueCoverter stehen zwischen Datenbindungsquelle und –ziel und konvertieren Werte.

Page 25: Datenbindung mit XAML in Windows 8

DEMO