Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Wenn Sie in einem Übersichtsfenster eine Liste von Datensätzen anzeigen, beispielsweise von Kunden, verwenden Sie vermutlich auch ein weiteres Fenster, indem Sie die Details eines Kunden anzeigen können. Mit einem gleichzeitig geöffneten Kundendetail-Fenster ist die Handhabung recht einfach – vor allem, wenn Sie dieses Fenster als modalen Dialog öffnen. Interessanter wird es, wenn Sie die Möglichkeit bieten wollen, mehr als einen Kunden gleichzeitig im Detailfenster anzuzeigen. Dann müssen Sie schon kontrollieren, welche Kunden bereits angezeigt werden und welche wieder geschlossen wurden. Dieser Artikel zeigt, wie Sie das mehrfache Öffnen eines Fensters realisieren und wie Sie die geöffneten Fenster vom öffnenden Fenster aus verwalten können.
Fenster mit Übersichtsliste
Als Erstes benötigen wir für unser Beispiel ein Fenster, das ein ListBox-Steuerelement zur Anzeige der Kundenübersicht enthält. Dieses sieht im Entwurf wie in Bild 1 aus. Das ListBox-Steuerelement soll die Daten einer Auflistung namens Kunden anzeigen, und von diesem das Feld Nachname verwenden.
Bild 1: Fenster mit ListBox für die Auswahl von Kunden
Dazu richten wir dieses mit den folgenden XAML-Definitionen ein. Die Definition der ListBox enthält unter ItemsSource die Angabe der Auflistung, aus der die Daten stammen, mit DisplayMemberPath die Eigenschaft der Elemente der Auflistung, die angezeigt werden soll und mit MouseDoubleClick die Angabe einer Methode, die beim Doppelklicken auf einen der Einträge ausgelöst werden soll:
<Label>Details anzeigen per Doppelklick</Label> <ListBox x:Name="lstKunden" Grid.Row="1" ItemsSource="{Binding Kunden}" DisplayMemberPath="Nachname" MouseDoubleClick="LstKunden_MouseDoubleClick"></ListBox>
Die Kunden bilden wir in der folgenden Klasse ab, für die wir einen Konstruktor zur einfachen Übergabe der Daten beim Anlegen neuer Elemente hinzugefügt haben:
Public Class Kunde Public Sub New(iD As String, vorname As String, nachname As String) Me.ID = iD Me.Vorname = vorname Me.Nachname = nachname End Sub Public Property ID As String Public Property Vorname As String Public Property Nachname As String End Class
In der Code behind-Klasse für das Hauptfenster deklarieren wir das List-Objekt, das die im ListBox-Steuerelement anzuzeigenden Kunde-Elemente aufnehmen soll. Außerdem initialisieren wir die Komponente in einer Konstruktor-Methode, rufen dort eine Methode zum Füllen des List-Objekts für die Kunden auf und stellen den DataContext auf das Code behind-Formular ein:
Class MainWindow Public Property Kunden As List(Of Kunde) Public Sub New() InitializeComponent() KundenFuellen() DataContext = Me End Sub
Die Methode KundenFuellen erstellt das List-Objekt für die Kunden und füllt diese mit fünf Beispielobjekten: