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

时间:2011-10-30 22:39:23

标签: c# .net wpf xaml app.xaml

我的应用程序的主UI位于MainWindow.xaml。

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

当应用程序启动时,我可以在MainWindow.xaml的加载事件中显示我的登录窗口,定义新的“login.xaml”并告诉它显示为对话框。但是,如果我这样做,那么在Login关闭之前不会出现MainWindow。

我想要实现的是当我的应用程序启动时,出现MainWindow,然后在其上方以模态方式显示“登录”窗口。

如何做到这一点?

3 个答案:

答案 0 :(得分:2)

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

    <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();
    }
    

答案 1 :(得分:1)

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

this.Loaded += LoadedEventHander;


void LoadedEventHander(object sender, RoutedEventArgs e)
{
    // Show Login.xaml here.
}

答案 2 :(得分:0)

  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>