Daily-Hour 40: Grundlagen der Datenbindung Teil 1
Bevor man überhaupt verwendet, sollte man sich der “statischen” Darstellung der Daten bewusst sein. Deshalb kommt erstmal eine kurze Einführung in die Darstellung von Daten ohne Datenbindung. Hierbei werden die Daten einmal eingelesen und ausgegeben. Auch hier fließt zumindest Daten vom Objekt zur Oberfläche und von der Oberfläche auch wieder zurück. Wenn man keine Datenbindung verwendet, muss man auf Push und Pull ausweichen.
Hierfür betrachten man die einzelnen Datenobjekte der Instanz von der Klasse Person:
public class Person
{
public string ID { get; }
public string ReisepassNr {set; get; }
public string Vorname { set; get; }
public string Name { set; get; }
public string DateTime { set; get; }
}
Bei der Speicherung einer Person in einer Datenbank erfolgt mit einem Primärschlüssel, der von der Datenbank automatisch beim Anlegen der Person erzeugt wird. Der Primärschlüssel ist nach der Erzeugung auch nicht mehr veränderbar, deshalb ist ID auch schreibgeschützt.
Die Oberfläche erlaubt das Anzeigen der Eigenschaften (und ändern der veränderlichen Eigenschaften). Für die unveränderlichen Daten verwenden wir zur Darstellung TextBlock und für die veränderlichen TextBox. Da die Elemente auch ansprechen muss, muss man ihnen auch einen Namen zu weisen.
<TextBlock x:Name=”tbID” Text=”ID”/>
<TextBox x:Name=”txVorname” Margin=”2″/>
<TextBox x:Name=”txName” Margin=”2″/>
<TextBox x:Name=”txDate” Margin=”2″/>
Aktionen, die durchgeführt werden sollten:
- Lesen
- Speichern
- Neuanlegen von Daten
Alle Vorgänge werden nur innerhalb des Objektes simuliert und dafür kann man sich 3 Button im XAML-Code anlegen.
Pull-/Push-Beziehung zwischen Objekte und Benutzeroberfläche
Das Realisieren der Pull-/Push-Beziehung ist realtiv simple. Ein Objekt erhält Daten und ein Eventhandler übergibt Änderungen an das Objekt (oder mehrere). Einen guten Kandiaten für einen Ereignisauslöser findet man in der TextBox (sowie auch in anderen Steuerelementen). Typische Ereignisse auf die man zurückgreifen kann, sind Änderungen des Textes (TextChanged) oder Verlust des Focus (LostFocus). Eine weitere Möglichkeit ist es, den Anwender bestimmen zu lassen, wann das “Ereignis” ausgelöst wird, durch das Drücken einer Schaltfläche.
Den Event-Handler kann man entweder im Code-beside oder im XAML-Code setzen. In der Klasse Person werden wir den Code für das Laden und Speichern von Daten simulieren:
public static Person GetPerson()
{
return new Person()
{
id = 1, Vorname=”Anna”, Name=”Bolika”, Geburtsdatum=new DateTime(1982, 3, 23)
}
}
public void Save()
{
}
Weiters schreiben wir den Code für das laden und anzeigen von Daten:
private void OnLoadClick(object sender, RoutedEventArgs e)
{
Person p = Person.GetPerson();
tbID.Text = p.ID.ToString();
txVorname.Text = p.Vorname;
txName.Text = p.Name;
txDate.Text = p.Date.ToShortDateString();
}
private void OnSaveClick(object sender, RoutedEventArgs e)
{
Person p = new Person();
p.Vorname = txVorname.Text;
p.Name = tx.Name.Text;
if (txDate.SelectedDate != null))
{
p.Date = (DateTime)txDate.Selected
}
}

