如何在主应用程序窗口后直接打开窗口

本文关键字:开窗口 窗口 应用程序 | 更新日期: 2023-09-27 18:13:03

我的应用程序的主界面是在MainWindow.xaml.

首先-是什么导致这是应用程序启动时打开的窗口。它似乎没有被定义为"启动对象",也没有任何代码专门启动这个窗口。

我可以让我的登录窗口出现时,应用程序开始在主窗口的加载事件。Xaml定义了一个新的"登录"。并告诉它显示为一个对话框。然而,如果我这样做,那么主窗口不会出现,直到登录已关闭。

我想要实现的是当我的应用程序启动时,主窗口出现,然后在登录窗口的顶部以模式显示。

如何做到这一点?

如何在主应用程序窗口后直接打开窗口

  1. 在VS中创建项目时,默认在App.xaml中定义MainWindow的启动:

    <Application ...
                 StartupUri="MainWindow.xaml">
        <Application.Resources>
        </Application.Resources>
    </Application>
    
  2. Loaded事件中创建对话框应该可以工作,只是不要在尚未加载的构造函数中这样做。

    Loaded="Window_Loaded"
    
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        new LoginDialogue().ShowDialog();
    }
    

一种方法是在主窗口中添加Loaded事件处理程序,并在其中显示登录窗口:

this.Loaded += LoadedEventHander;

void LoadedEventHander(object sender, RoutedEventArgs e)
{
    // Show Login.xaml here.
}
  1. 在app.xaml中,下面这行定义了启动窗口,如果你想改变它

    StartupUri="MainWindowView.xaml"
    
  2. 如果您遵循MVVM,您可以使用System.Windows.Interactivity将命令绑定到windows加载的事件(否则只需像其他人建议的那样创建一个事件处理程序)

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Loaded">
            <i:InvokeCommandAction Command="{Binding MyICommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>