我的WPF应用程序正在发生一些神秘的事情。我更改了主窗口,关闭它后,应用程序没有关闭。这是我的App.xaml:
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:LogAnalysis" x:Class="LogAnalysis.App"
StartupUri="ChartWindow.xaml" ShutdownMode="OnMainWindowClose">
<Application.MainWindow>
<local:ChartWindow/>
</Application.MainWindow>
</Application>
我试图弄清楚为什么关闭后进程仍然存在,并写了这样的代码:
foreach (var window in Application.Current.Windows)
{
MessageBox.Show((window as Window).Title);
}
显示了两个带有相同消息的消息框。因此,似乎在一个应用程序实例中有两个主窗口实例正在运行。
我不能与此使用解决方案:
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
Application.Current.Shutdown();
}
因为该Window.Closing
事件由于该窗口的第二个实例而被触发两次(并且破坏了用户设置)。
哦,终于明白了。在App.xaml文件中,无需显式确定“主窗口”属性。因此,此代码不仅是多余的,而且还调用了窗口构造函数:
<Application.MainWindow>
<local:ChartWindow/>
</Application.MainWindow>
仅更改StartupUri
属性就足够了。
希望它能对某人有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句