从app.xaml.cs WPF按顺序启动两个窗口

Luc*_*ter 2 c# wpf xaml app.xaml

我想让用户在MainWindow出现之前登录。

第一个窗口显示出来,工作正常,并且在关闭所有其他WindowName.ShowDialog()调用后不起作用。

我的代码:在app.xaml中,我删除了StartUpURI并将其替换为

 Startup="Application_Startup"
Run Code Online (Sandbox Code Playgroud)

看起来像这样(app.xaml.cs):

private void Application_Startup(object sender, StartupEventArgs e)
        {
            Window1 window1 = new Window1();
            window1.ShowDialog();

            MainWindow window2 = new MainWindow();
            window2.ShowDialog();
        }
Run Code Online (Sandbox Code Playgroud)

我有两个完全不变的窗户(除了标题),第二个看起来一样:

    <Window x:Class="Delete_Me.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Delete_Me"
        mc:Ignorable="d"
        Title="First window" Height="300" Width="300">
    <Grid>

    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

后面的代码也保持不变。

问题 如何从app.xaml.cs依次启动两个窗口?还是有什么更好的方法呢?

我的方法是 尝试换掉两个窗口,它们没有任何变化。

当然,我可以从MainWindow的contructor / OnLoaded中启动LoginForm,但这似乎并不是解决该问题的理想方法。

如果身份验证失败,我甚至不想启动MainWindow。

有什么建议么?谢谢。

Fru*_*erg 5

如果没有更多的窗口,则WPF应用程序退出。这意味着在创建第二个窗口之前,关闭第一个窗口后,您的应用程序将停止。

为了解决您的问题,您需要在关闭第一个窗口之前创建第二个窗口。只需将代码更改为

Window1 window1 = new Window1();
MainWindow window2 = new MainWindow();

window1.ShowDialog();
window2.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

要解决这个问题。