我的应用程序的主界面是在MainWindow.xaml.
首先-是什么导致这是应用程序启动时打开的窗口。它似乎没有被定义为"启动对象",也没有任何代码专门启动这个窗口。
我可以让我的登录窗口出现时,应用程序开始在主窗口的加载事件。Xaml定义了一个新的"登录"。并告诉它显示为一个对话框。然而,如果我这样做,那么主窗口不会出现,直到登录已关闭。
我想要实现的是当我的应用程序启动时,主窗口出现,然后在登录窗口的顶部以模式显示。
如何做到这一点?
-
在VS中创建项目时,默认在
App.xaml
中定义MainWindow
的启动:<Application ... StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application>
-
在
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.
}
-
在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>