2016-08-08 92 views
1

ich ein anderes Fenster neben meinem Hauptfenster in meiner Anwendung habe ich die Schließung-Methode wie folgt außer Kraft setzen, weil ich vollständig geschlossen sein, das Fenster nicht wollen:ein Fenster versteckt versteckt das Hauptfenster

private void Window_Closing(object sender, CancelEventArgs e) 
{ 
    e.Cancel = true; 
    this.Visibility = Visibility.Hidden; 
} 

dann im Konstruktor:

public Inputwindow() 
{ 
    InitializeComponent(); 
    this.Closing += Window_Closing; 
} 

Aber jetzt, wenn ich mein Hauptfenster schließen möchten, versteckt es nur das Hauptfenster.

Ich kann nicht herausfinden, wie man es zur Arbeit bringt.

+0

Was möchten Sie tun oder in der Nähe verstecken? – Marusyk

+0

Ich glaube, dass er das Fenster nicht entsorgen will. Das window_closing-Ereignis, für das deklariert wird? Wenn this.visibility = visibility.hidden das Hauptfenster schließt, bedeutet dies, dass dies das Hauptfenster ist, also haben Sie es an der falschen Stelle deklariert. –

+0

@MegaTron In meinem MainWindow öffne ich ein anderes Fenster, welches nicht geschlossen werden sollte, wenn ich auf die Schließen-Schaltfläche dieses neuen Fensters klicke. Also habe ich oben die Methode implementiert, um das neue Fenster auszublenden. Aber jetzt, wenn ich auf die Schließen-Schaltfläche auf dem MainWindow klicke, schließt es nicht die ganze Anwendung. Es verbirgt nur das MainWindow stattdessen. –

Antwort

4

Jede WPF-Anwendung hat eine Eigenschaft namens Application.ShutdownMode, die bestimmt, wann die Anwendung tatsächlich beendet wird. Standardmäßig ist es auf OnLastWindowClose eingestellt, was bedeutet, dass die Anwendung erst beendet wird, wenn alle Fenster geschlossen sind (selbst wenn das Hauptfenster geschlossen wird). Es klingt wie Sie möchten, dass Ihre Anwendung beendet wird, wenn das Hauptfenster geschlossen wird, auch wenn andere Fenster nicht geschlossen sind, nur versteckt, was dem OnMainWindowClose-Modus entsprechen würde. Hier ist der relevante Dokumentation MSDN: https://msdn.microsoft.com/en-us/library/system.windows.application.shutdownmode(v=vs.110).aspx

Um die Eigenschaft in XAML festgelegt, öffnen Sie die Datei App.xaml und fügen Sie die Eigenschaft Shutdown wie folgt aus:

<Application x:Class="TestClass" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ShutdownMode="OnMainWindowClose">  

</Application> 
+0

Also, wenn ich eine Abschlussmethode für das MainWindow implementieren, wo ich alle anderen Windows schließe und dann das MainWindow schließe, würde es funktionieren? –

+0

Ja, das ist ein möglicher Ansatz, aber ich denke, es ist besser, dies ausdrücklich zu erwähnen. Da die Anwendung beim Schließen des Hauptfensters heruntergefahren werden soll, würde ich empfehlen, den ShutdownMode entsprechend einzustellen. Ich habe meine Antwort mit einem Beispiel für das Festlegen der Eigenschaft in Ihrer App.xaml-Datei bearbeitet. Hängen Sie einfach die ShutdownMode-Eigenschaft an das Application-Tag in Ihrer App.xaml an, wie im Beispielcode. Ihre sollten ähnlich sein, außer dass Sie einige andere Eigenschaften hinzugefügt haben, die ich nicht auf meinen habe. – rmc00

+0

Ja, das Einstellen der Eigenschaft in meiner App.xaml hat für mich funktioniert! Vielen Dank! –