App XAMLは、最初のウィンドウがメインウィンドウであると仮定します(ShowDialogは無視されます)、複数のウィンドウを表示する必要があります

StackOverflow https://stackoverflow.com/questions/4199932

質問

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">

チェックする行をコメントするとき reftelementInstall() Manager.showdialog() 正常に動作し、設定ウィンドウが表示されます。いつ reftelementInstall() コールと呼ばれます Manager.showdialog() ウィンドウを表示せずにすぐに返します。ラインに沿ってどこかで誰かがアプリに1つのウィンドウを表示することを決定したという仮定にメインウィンドウを追加しました。

完了インストールを呼び出す前にメインウィンドウを設定することで回避策を見つけました

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

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

しかし、これにより、その使用に基づいてWinServiceConfig(具体的にはコンストラクター)を開発することができます。これは悪い形です。この問題を回避するために他に何ができますか?

ダミーウィンドウ?それは最良の答えではありません。それをできる??

役に立ちましたか?

解決

ShutdownModeをOneXplicitshutdownに設定する必要があります(少なくとも最初のダイアログを表示している間)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top