我的应用程序的主UI位于MainWindow.xaml。
首先 - 是什么导致这个应用程序在启动时打开的窗口。它似乎没有被定义为“starup对象”,并且似乎没有任何专门启动此窗口的代码。
当应用程序启动时,我可以在MainWindow.xaml的加载事件中显示我的登录窗口,定义新的“login.xaml”并告诉它显示为对话框。但是,如果我这样做,那么在Login关闭之前不会出现MainWindow。
我想要实现的是当我的应用程序启动时,出现MainWindow,然后在其上方以模态方式显示“登录”窗口。
如何做到这一点?
答案 0 :(得分:2)
在VS中创建项目时,MainWindow
的启动默认在App.xaml
中定义:
<Application ...
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
在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)
在app.xaml中,以下行定义了启动窗口,如果需要,可以更改
StartupUri="MainWindowView.xaml"
如果您正在关注MVVM,您可以使用System.Windows.Interactivity将命令绑定到Windows加载的事件(否则只需创建其他人建议的事件处理程序)
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding MyICommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>