我的App.xaml.cs中有以下代码
private void App_Start(object sender, StartupEventArgs e)
{
if ( CompletedInstall())
{
//using show to allow for pacifier if loading is slow
var manager = new WINServiceConfig();
MainWindow = manager;
manager.ShowDialog();
}
}
private bool CompletedInstall()
{
var window = new Initialize();
window.ShowDialog();
return window.DoLaunchManager;
}
以及App.xaml中的以下内容
<Application x:Class="Manager.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="App_Start">
当我注释掉检查 CompletedInstall()的行时, manager.ShowDialog()工作正常,我的配置窗口显示。 当 CompletedInstall()被调用时,对 manager.ShowDialog()的调用立即返回,而不显示窗口。我添加了主窗口,假设在某个地方有人决定应用程序应该只显示一个窗口。
我通过在调用CompletedInstall
之前设置主窗口找到了一种解决方法 private void App_Start(object sender, StartupEventArgs e)
{
var manager = new WINServiceConfig();
MainWindow = manager;
if (CompletedInstall())
{
manager.ShowDialog();
}
但是这迫使我根据其用途开发WINServiceConfig(特别是构造函数),因为它不能指望完成的先决条件。这是不好的形式。我还能做些什么来解决这个问题?
虚拟窗口?这不是最好的答案。可以吗?
答案 0 :(得分:6)
您应该将ShutdownMode设置为OnExplicitShutdown(至少在显示初始对话框时)。