Basics: PropertyChanged

Wenn Sie ein Abonnement des Magazins 'DATENBANKENTWICKLER' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.

Basics: PropertyChanged

Unter Access/VBA haben Sie Tabellen direkt an Formulare und Steuerelemente gebunden, Änderungen an den Daten wurden regelmäßig auch im Frontend aktualisiert. Unter C#/WPF sieht das ganz anders aus: Hier landen die Daten aus der Tabelle erstmal in Objekten und deren Eigenschaften werden mit Steuerelementen wie TextBox, ComboBox und so weiter angezeigt. Damit sich eine Änderungen am zugrunde liegenden Objekte auch in der Benutzeroberfläche manifestiert, sind ein paar zusätzliche Handgriffe nötig.

Beispiel: Einfache Kundenklasse

Um uns diese Handgriffe anzusehen, entwerfen wir ein ganz einfaches Beispiel. In diesem legen Sie in einem neuen, leeren Projekt des Typs Visual C#|WPF-Anwendung namens PropertyChanged eine neue Klasse namens Kunde.cs an und füllen das dortige Namespace-Element PropertyChanged wie folgt:

public class Kunde {
     string vorname;
     string nachname;
     public string Vorname {
         get { return vorname; }
         set { vorname = value; }
     }
     public string Nachname {
         get { return nachname; }
         set { nachname = value; }
     }
}

Dem Grid des Fensters MainWindow.xaml fügen wir in zwei Spalten und drei Zeilen einige Elemente hinzu, die wie folgt definiert werden und die im Entwurf wie in Bild 1 aussehen:

Beispielfenster

Bild 1: Beispielfenster

<Grid>
     --- Grid-Definition ...
     <Label Content="Vorname:" Grid.Row="1" Margin="5"></Label>
     <TextBox Text="{Binding kunde.Vorname}" Margin="5" Grid.Row="1" Grid.Column="1"></TextBox>
     <Label Content="Nachname:" Grid.Row="0" Margin="5"></Label>
     <TextBox Text="{Binding kunde.Nachname}" Grid.Row="0" Grid.Column="1" Margin="5"></TextBox>
     <StackPanel Orientation="Horizontal" Grid.Row="2" Grid.ColumnSpan="2">
         <Button x:Name="btnNachnameAendern" Margin="5" Content="Nachname ändern" Click="btnNachnameAendern_Click"></Button>
         <Button x:Name="btnVornameAendern" Margin="5" Content="Vorname ändern" Click="btnVornameAendern_Click"></Button>
     </StackPanel>
</Grid>

Die beiden TextBox-Elemente sind jeweils über das Attribut Text an die Eigenschaften kunde.Vorname und kunde.Nachname gebunden. Das Objekt kunde des Typs Kunde enthält, wie aus der Klassendefinition oben ersichtlich, die beiden Eigenschaften Vorname und Nachname und wird beim Erstellen des Fensters MainWindows erzeugt. Dafür sorgt die Konstruktor-Methode MainWindow(), die beim Erstellen des Objekts ausgelöst wird. Die Klasse enthält außerdem noch eine öffentliche Variable des Typs Kunde namens kunde, die in der Konstruktor-Methode gefüllt wird:

//Code der Klasse MainWindow.xaml.cs
public partial class MainWindow : Window {
     public Kunde kunde { get; set; }           //öffentliche Variable für das anzuzeigende Kunde-Objekt
     public MainWindow() {                      //Konstruktor-Methode
         InitializeComponent();                 //Initialisiert das Fenster auf Basis des .xaml-Codes
         kunde = new Kunde();                   //Erstellt ein neues Kunde-Objekt
         kunde.Vorname = "André";               //Füllt die Eigenschaft Vorname

Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.

Bitte geben Sie die Zeichenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Aktuell im Blog
Listenfeld: Reihenfolge mehrerer Einträge...

Wir haben bereits in mehreren Beiträgen beschrieben, wie Sie die individuelle Reihenfolge von... [mehr]

Diagramme mit gefilterten Daten

In Ausgabe 2/2019 haben wir in zwei Artikeln die modernen Diagramme von Access vorgestellt. Im... [mehr]

Benutzerverwaltung mit verschlüsselten...

Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und... [mehr]

HTML-Tabellen mit fester Kopfzeile

In den vorherigen Ausgaben von Access im Unternehmen und in der aktuellen Ausgabe arbeiten wir in... [mehr]

Flexible HTML-Tabellen mit fester Kopfzeile

Im Beitrag »HTML-Tabellen mit fester Kopfzeile« haben wir gezeigt, wie Sie Daten aus einer... [mehr]

Berechtigungen per HTML verwalten

Im Beitrag »Benutzerverwaltung mit verschlüsselten Kennwörtern« stellen wir eine Lösung vor, in... [mehr]

Benutzer und Berechtigungen ermitteln

In den Beiträgen »Benutzerverwaltung mit verschlüsselten Kennwörtern« und »Berechtigungen per... [mehr]

Zugriffsrechte mit Datenmakros

Es gibt verschiedene Möglichkeiten, auf Basis des aktuell angemeldeten Benutzers sicherzustellen,... [mehr]

Kennwörter generieren

Für den einen oder anderen Zweck möchten Sie vielleicht Kennwörter generieren oder in einer... [mehr]

Neuer Datensatz von Frontend zu Backend

Für manche Themen gibt es keine kurze, prägnante Überschrift. In diesem Fall wollen wir zeigen,... [mehr]