2016-08-08 222 views
1

我在我的申請得到了另一個窗口,除了我的主窗口和我重寫閉合方法是這樣,因爲我不想讓窗口完全關閉:隱藏窗口隱藏主窗口

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

然後在構造函數中:

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

但是現在如果我想關閉我的MainWindow,它只隱藏MainWindow。

無法弄清楚,如何讓它工作。

+0

你想要什麼隱藏或關閉? – Marusyk

+0

我相信他不想處置這個窗口。 window_closing事件是在哪裏聲明的?如果this.visibility = visibility.hidden關閉主窗口意味着這是主窗口,所以你宣佈它在錯誤的地方。 –

+0

@MegaTron在我的主窗口中,我打開另一個窗口,如果我單擊此新窗口的關閉按鈕,則不應該關閉該窗口。所以我實現了上面的方法來隱藏新窗口。但是現在如果我單擊MainWindow上的關閉按鈕,它不會關閉整個應用程序。它只是隱藏MainWindow。 –

回答

4

每個WPF應用程序都有一個名爲Application.ShutdownMode的屬性,它確定應用程序何時實際結束。默認情況下,它被設置爲OnLastWindowClose,這意味着應用程序不會結束,直到所有窗口關閉(即使主窗口關閉)。這聽起來像你希望你的應用程序在主窗口關閉時結束,即使其他窗口沒有關閉,只是隱藏,這將對應於OnMainWindowClose模式。下面是相關的MSDN文檔:https://msdn.microsoft.com/en-us/library/system.windows.application.shutdownmode(v=vs.110).aspx

設置屬性在XAML中,打開App.xaml文件並添加ShutdownMode屬性是這樣的:

<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

所以如果我實現了關閉所有其他窗口,然後關閉MainWindow的MainWindow的關閉方法,它會工作嗎? –

+0

是的,這是一種可能的方法,但我認爲最好明確這一點。由於您希望在關閉主窗口時關閉應用程序,因此我建議您相應地設置ShutdownMode。我用一個如何在你的App.xaml文件中設置屬性的例子編輯我的答案。只需將ShutdownMode屬性追加到App.xaml中的Application標籤中,就像我在示例代碼中所做的那樣。你的應該是類似的,除了你可能已經添加了一些我沒有的其他屬性。 – rmc00

+0

是的,在我的App.xaml中設置屬性爲我工作!謝謝! –