LernMoment / community-fragen

C# Fragen aus der LernMoment Community zum lernen und üben in der LernMoment Community.
The Unlicense
2 stars 3 forks source link

Antwort zur Frage: WPF-1 - Wie öffne ich ein Unterfenster? #3

Open LMStudent opened 4 years ago

LMStudent commented 4 years ago

@suchja Hier meine Antwort zur Frage: WPF-1: Wie öffne ich ein Unterfenster?

In WPF sind auch alle Oberflächenelemente (wie z.B. Window) ganz "normale" Objekte. Daher können auch Instanzen eines Window im Quellcode angelegt werden. Um nun also aus einem Fenster (nennen wir es MainWindow) ein anderes Fenster (nennen wir es SubWindow) zu öffnen, braucht es folgende Schritte:

  1. Ein neues Window mit Namen SubWindow erstellen (z.B. im Projektmappenexplorer Hinzufügen im Kontextmenü und dann Fenster wählen) und mit dem gewünschten Inhalt füllen. (Siehe Beispielcode hier)
  2. Dem MainWindow einen Button inkl. Click-Event und Eventhandler hinzufügen. (Siehe Beispielcode hier)
  3. Im Eventhandler im MainWindow-Quellcode eine Instanz vom SubWindow erstellen und darauf Show oder ShowDialog aufrufen. (siehe Beispielcode hier)

Bonus-Info: Der Unterschied zwischen Show und ShowDialog liegt darin, dass das MainWindow bei der Verwendung von ShowDialog nicht mehr angesprochen werden kann, bis das SubWindow wieder geschlossen wurde. Dieses Verhalten bei Fenstern wird auch als modal bezeichnet. Wird das SubWindow über Show geöffnet können beide Fenster unabhängig von einander bedient werden. Wichtig ist dabei, dass WPF nicht grundsätzlich eine Beziehung zwischen den Fenstern herstellt. D.h. öffnest du ein Unterfenster via Show und schließt das "Hauptfenster", dann läuft die Anwendung weiter und nur das Unterfenster wird angezeigt. Um dieses zu beheben kann du nach dem Anlegen des Unterfensters eine "Eltern-Kind-Beziehung" zwischen den beiden Fenstern definieren (über die Owner Eigenschaft - siehe Beispiel). Dann wird beim Schließen des Hauptfensters auch das Unterfenster geschlossen.