主窗口前的WPF显示对话框


Answers

好的道歉,这里是解决办法:

我原来的问题几乎工作,只添加一件事,从应用程序XAML中删除StartupUri,然后添加显示到主窗口。

那是:

<Application x:Class="DialogBeforeMainWindow.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Startup="Application_Startup">

以上, 删除了StartupUri

添加myMainWindow.Show()

public partial class App : Application
{

    private void Application_Startup(object sender, StartupEventArgs e)
    {
        Window1 myMainWindow = new Window1();
        DialogWindow myDialogWindow = new DialogWindow();
        myDialogWindow.ShowDialog();
        myMainWindow.Show();
    }

}
Question

如何在主窗口之前显示对话窗口(例如登录/选项等)?

这是我试过的(它显然曾经工作过 ,但不再是):

XAML

<Application ...
    Startup="Application_Startup">

应用

public partial class App : Application
{
    private void Application_Startup(object sender, StartupEventArgs e)
    {
        Window1 myMainWindow = new Window1();
        DialogWindow myDialogWindow = new DialogWindow();
        myDialogWindow.ShowDialog();
    }
}

结果 :首先显示myDialogWindow。 当它关闭时,Window1将按预期方式显示。 但是,当我关闭Window1的应用程序根本不关闭。




在这里,这样做。 这将有效地改变你的主窗口,并将正常工作,而不必改变你的应用程序对象的设置。

确保删除应用程序启动的事件处理程序,并在您的app.xaml文件中设置您的StartupUri。

public partial class App : Application
{
   bool init = false;
   protected override void OnActivated(EventArgs e)
   {
      base.OnActivated(e);
      if (!init)
      {
         this.MainWindow.Closing += new System.ComponentModel.CancelEventHandler(MainWindow_Closing);
         init = true;
      }
   }

   void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
   {
      Window toClose = this.MainWindow;
      this.MainWindow = new Window2();
      this.MainWindow.Show();
   }
}



如果你把Application.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown; 进入对话框的构造函数,并添加

protected override void OnClosed(EventArgs e) {
    base.OnClosed(e);
    Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
}

进入对话框类,您不必担心对应用程序的默认行为进行任何更改。 如果您只想将登录屏幕捕捉到已经存在的应用程序中,而无需调整启动过程,则此功能非常有用。






Links