App xaml假设实例化的第一个窗口是主窗口(showdialog被忽略),我需要显示多个窗口

red*_*der 4 windows wpf app.xaml mainwindow

我在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;
}
Run Code Online (Sandbox Code Playgroud)

以及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">
Run Code Online (Sandbox Code Playgroud)

当我注释掉检查线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();
          }
Run Code Online (Sandbox Code Playgroud)

但这迫使我根据其用途开发WINServiceConfig(特别是构造函数),因为它不能指望完成的先决条件.这是不好的形式.我还能做些什么来解决这个问题?

假窗口?这不是最好的答案.它可以??

小智 6

您应该将ShutdownMode设置为OnExplicitShutdown(至少在显示初始对话框时).