2016-08-08 191 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中设置属性为我工作!谢谢! –