【问题标题】:App xaml assumes the first window instantiated is the main window (showdialog is ignored), I need to show multiple windows应用 xaml 假设实例化的第一个窗口是主窗口(showdialog 被忽略),我需要显示多个窗口
【发布时间】:2011-05-11 03:21:01
【问题描述】:

我的 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() 的行时,ma​​nager.ShowDialog() 工作正常,并显示我的配置窗口。 当 CompletedInstall() 被调用时,对 ma​​nager.ShowDialog() 的调用会立即返回而不显示窗口。我添加了主窗口,假设有人决定某个应用程序应该只显示一个窗口。

我通过在调用 CompletedInstall 之前设置主窗口找到了解决方法

        private void App_Start(object sender, StartupEventArgs e)
        {
          var manager = new WINServiceConfig();
          MainWindow = manager;

          if (CompletedInstall())
          {
            manager.ShowDialog();
          }

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

虚拟窗口?这不可能是最好的答案。可以吗??

【问题讨论】:

    标签: wpf windows app.xaml mainwindow


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-10-23
      • 2011-07-27
      • 2012-10-08
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      相关资源
      最近更新 更多