Fenster mehrfach öffnen

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.

Fenster mit ListBox für die Auswahl von Kunden

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:

 

Schreibe einen Kommentar