【问题标题】:How to open window directly after main application window如何在主应用程序窗口之后直接打开窗口
【发布时间】:2011-10-30 22:39:22
【问题描述】:

我的应用程序的主 UI 在 MainWindow.xaml 中。

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

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

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

如何做到这一点?

【问题讨论】:

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


    【解决方案1】:
    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();
      }
      

    【讨论】:

      【解决方案2】:

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

      this.Loaded += LoadedEventHander;
      
      
      void LoadedEventHander(object sender, RoutedEventArgs e)
      {
          // Show Login.xaml here.
      }
      

      【讨论】:

        【解决方案3】:
        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>
          

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-10-28
          • 1970-01-01
          • 2011-04-24
          • 1970-01-01
          • 2015-07-15
          • 1970-01-01
          • 2014-11-29
          相关资源
          最近更新 更多