Das ListBox-Steuerelement: Grundlagen

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.

Das ListBox-Steuerelement: Grundlagen

Wer unter Access/VBA gern das Listenfeld als Steuerelement genutzt hat, wird unter WPF ein ähnliches Steuerelement verwenden wollen. Ein einfach aufgebautes Steuerelement zur Anzeige von Texten in Listenform ist das ListBox-Steuerelement. Es lässt sich sehr leicht definieren und mit Daten füllen, sei es vordefiniert per XAML oder auch zur Laufzeit per Code. Dieser Artikel zeigt die Grundlagen zur Definition und Programmierung des ListBox-Steuerelements. Dabei erfahren Sie, wie Sie es mit einfachen Texten füllen, Einträge selektieren, die Selektion auslesen und auf Ereignisse wie die geänderte Auswahl oder einen Doppelklick reagieren können.

Programmiersprache

Die Beispiele in diesem Artikel basieren auf C#.

Hinweis

Um die verschiedenen Beispiele übersichtlich darzustellen, haben wir diese statt in verschiedenen Window-Elementen in Page-Elementen untergebracht, die dann über das Ribbon im Kopf des Fensters MainWindow per Mausklick auf den jeweiligen Ribbon-Button geöffnet werden können.

Die Definition des RibbonButton-Elements enthält dann im Attribut tag den Namen des zu öffnenden Page-Elements:

<RibbonButton Label="Einfache Einträge" Click="RibbonButton_Click" Tag="pgeEinfacheEintraege"></RibbonButton>

Die dort angegebene Ereignismethode Ribbon_Button_Click fragt den Wert des Tag-Attributs ab und öffnet das entsprechende Page-Element im Frame-Steuerelement:

private void RibbonButton_Click(object sender, RoutedEventArgs e) {
     RibbonButton button = (RibbonButton)sender;
     string pge = button.Tag.ToString();
     Workzone.Content = GetInstance("ListBox_Beispiele." + pge);
}

Listbox hinzufügen

Der erste und einfachste Schritt ist das Hinzufügen des ListBox-Elements: Dazu ziehen Sie es einfach aus der Toolbox in das WPF-Fenster und lassen es dort fallen.

Oder Sie machen es wie ein richtiger Programmierer und fügen ein ListBox-Element zur XAML-Definition des Fensters hinzu:

<ListBox x:Name="lstBeispiel" Height="100" Width="300" Margin="10,10" HorizontalAlignment="Left" VerticalAlignment="Top"></ListBox>

Zusammen mit einem Label soll unsere erste Beispiel-ListBox dann wie folgt deklariert sein und im Entwurf wie in Bild 1 aussehen:

Entwurf unseres ListBox-Steuerelements

Bild 1: Entwurf unseres ListBox-Steuerelements

<Grid>
     <Grid.RowDefinitions>
         <RowDefinition></RowDefinition>
     </Grid.RowDefinitions>
     <Grid.ColumnDefinitions>
         <ColumnDefinition Width="100"></ColumnDefinition>
         <ColumnDefinition></ColumnDefinition>
     </Grid.ColumnDefinitions>
     <Label Grid.Column="0" Margin="10,10,10,10">Listbox:</Label>
     <ListBox x:Name="lstBeispiel" Grid.Column="1" Margin="10,10,10,10"></ListBox>
</Grid>

Einträge vordefinieren

Vielleicht wissen Sie schon zur Entwurfszeit, welche Einträge die Liste anzeigen soll. Dann können Sie diese Elemente einfach per XAML festlegen. Der XAML-Code für die ListBox sieht dann wie folgt aus:

<ListBox x:Name="lstEintraege" Grid.Column="1" Margin="10,10,10,10">
     <ListBoxItem>Erster Eintrag</ListBoxItem>
     <ListBoxItem>Zweiter Eintrag</ListBoxItem>
     <ListBoxItem>Dritter Eintrag</ListBoxItem>
     <ListBoxItem>Vierter Eintrag</ListBoxItem>
</ListBox>

Diese Einträge werden dann in der ListBox wie in Bild 2 angezeigt.

Feste Beispieleinträge in einem ListBox-Element

Bild 2: Feste Beispieleinträge in einem ListBox-Element

Element per XAML vorselektieren

Wenn Sie die Elemente per XAML vordefinieren, können Sie auch einen der Einträge vorselektieren. Dazu fügen Sie dem betroffenen Element einfach das Attribut IsSelected hinzu und stellen es auf true ein:

<ListBoxItem IsSelected="true">Erster Eintrag</ListBoxItem>

ListBox-Element mit Texten füllen

Die erste Schaltfläche, die wir hinzufügen, soll einen Eintrag zum Listenfeld hinzufügen. Das erledigen wir mit der Add-Methode der Items-Auflistung der ListBox. Die Schaltfläche definieren wir wie folgt:

<Button x:Name="btnNamen" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" Height="30" Margin="10,10,10,10" Click="btnNamen_Click">Namen</Button>

Das Click-Ereignis soll diese Methode auslösen:

private void btnNeuerEintrag_Click(object sender, RoutedEventArgs e) {
     lstEintraege.Items.Add("Fünfter Eintrag");
}

Das Ergebnis sieht schließlich wie in Bild 3 aus.

Einfügen einiger Einträge zu einem ListBox-Element

Bild 3: Einfügen einiger Einträge zu einem ListBox-Element

ListBox leeren

Wenn Sie alle Einträge aus der ListBox entfernen wollen, verwenden Sie die Clear-Methode der Items-Auflistung:

private void btnAlleLoeschen_Click(object sender, RoutedEventArgs e) {
     lstEintraege.Items.Clear();
}

Einfach- oder Mehrfachauswahl

Der Benutzer kann natürlich einen oder mehrere Einträge in der ListBox auswählen. Ob er einen oder mehrere auswählen kann, legen Sie mit der Eigenschaft SelectionMode fest. Diese kann die folgenden Werte annehmen:

  • Single: Standardeinstellung. Es kann nur ein Eintrag gleichzeitig ausgewählt sein. Allerdings kann der gewählte Eintrag auch nur noch abgewählt werden, indem man einen anderen Eintrag ausgewählt.
  • Multiple: Der Benutzer kann einen, keinen oder mehrere Einträge auswählen. Zum Aus- oder Abwählen muss der jeweilige Eintrag angeklickt werden.
  • Extended: Der Benutzer kann einen, keinen oder mehrere Einträge auswählen. Zum Aus- oder Abwählen gibt es mehrere Möglichkeiten: Ein einfacher Klick wählt einen Eintrag aus und alle anderen ab. Klicken bei gedrückter Strg-Taste arbeitet wie die Einstellung Multiple. Klicken bei gedrückter Umschalt-Taste wählt Bereiche aus.

Wir haben das in der Beispieldatenbank auf einer neuen Seite namens pgeEintraegeAuswaehlen abgebildet. Hier können Sie mit einer ComboBox einen der Modi für die Auswahl selektieren:

<ComboBox Grid.Column="1" Grid.Row="1" Margin="10,10,10,10" SelectionChanged="ComboBox_SelectionChanged">
     <ComboBoxItem IsSelected="true">Einfach</ComboBoxItem>
     <ComboBoxItem>Mehrfach</ComboBoxItem>
     <ComboBoxItem>Erweitert</ComboBoxItem>
</ComboBox>  

Dies löst die folgende Ereignismethode aus:

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) {

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.

Neues aus unseren Magazinen
Listenfeld: Reihenfolge mehrerer Einträge...

Wir haben bereits in mehreren Beiträgen beschrieben, wie Sie die individuelle Reihenfolge von Elementen einer Tabelle über den Inhalt eines Feldes etwa namens »ReihenfolgeID« einstellen können –... [mehr]

Diagramme mit gefilterten Daten

In Ausgabe 2/2019 haben wir in zwei Artikeln die modernen Diagramme von Access vorgestellt. Im vorliegenen Beitrag zeigen wir Ihnen, wie Sie diese abhängig von den in einem Formular angezeigten... [mehr]

Benutzerverwaltung mit verschlüsselten...

Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und Kennwort an die Anwendung anmelden, sollten Sie sehr sensibel mit den in der Anwendung gespeicherten... [mehr]

HTML-Tabellen mit fester Kopfzeile

In den vorherigen Ausgaben von Access im Unternehmen und in der aktuellen Ausgabe arbeiten wir in einigen Beiträgen mit dem Webbrowser-Steuerelement und stellen Daten, die wir mit den Bordmitteln... [mehr]

Flexible HTML-Tabellen mit fester Kopfzeile

Im Beitrag »HTML-Tabellen mit fester Kopfzeile« haben wir gezeigt, wie Sie Daten aus einer bestimmten Abfrage in einem Webbrowser-Steuerelement so anzeigen, dass die Spaltenköpfe oben fixiert... [mehr]

Berechtigungen per HTML verwalten

Im Beitrag »Benutzerverwaltung mit verschlüsselten Kennwörtern« stellen wir eine Lösung vor, in der wir die Berechtigungen von Benutzergruppen an Datenbankobjekten definieren. Dort benötigen wir... [mehr]

Benutzer und Berechtigungen ermitteln

In den Beiträgen »Benutzerverwaltung mit verschlüsselten Kennwörtern« und »Berechtigungen per HTML verwalten« haben wir die Voraussetzungen für eine Benutzerverwaltung geschaffen. Im vorliegenden... [mehr]

Zugriffsrechte mit Datenmakros

Es gibt verschiedene Möglichkeiten, auf Basis des aktuell angemeldeten Benutzers sicherzustellen, dass dieser nur die für ihn vorgesehenen Aktionen mit Daten durchführen darf – beispielsweise durch... [mehr]

Kennwörter generieren

Für den einen oder anderen Zweck möchten Sie vielleicht Kennwörter generieren oder in einer Benutzeroberfläche die Möglichkeit zum Generieren von Kennwörtern anbieten. Wenn Sie etwa Benutzer zu... [mehr]

Neuer Datensatz von Frontend zu Backend

Für manche Themen gibt es keine kurze, prägnante Überschrift. In diesem Fall wollen wir zeigen, wie Sie einen neuen Datensatz anlegen, der in einer temporären Tabelle im Frontend gespeichert wird,... [mehr]