2011-04-18 120 views
23

我想不起来的愚蠢简单的问题。如何切换WPF窗口?

我有一个WPF应用程序,我想先显示一个登录对话框(在主窗口出现之前)。

如果用户登录成功,那么我想显示主窗口,如果没有,我想退出应用程序。

如何正确地做到这一点?

回答

41

我想我想通了我想做什么。

1)我需要将App.xaml中的“StartupUri”设置为“Logon.xaml”,其中Logon.xaml是我的登录窗口。

2)LogonButton_Click事件处理程序,添加以下

if (blnAuthenticateSuccessful) { 
    MainWindow main = new MainWindow(); 
    App.Current.MainWindow = main; 
    this.Close(); 
    main.Show(); 
} 

这似乎完成我想要的东西。

3

如果您想要显示一个新窗口以允许用户输入他们的登录信息,那么我在下面添加了一些代码。然而,创建一个真正的模态对话框在WPF中稍微复杂一点,所以我在这里没有解释它。有一个关于在WPF模态对话框此信息:http://msdn.microsoft.com/en-us/library/aa969773.aspx

从可以打开的登录窗口,并隐藏与此主窗口中的主窗口:

// Code for MainWindow 

// Create a new instance of the login window and then show it 
LoginWindow loginWindow = new LoginWindow(); 
loginWindow.Show(); 

// Hide the MainWindow until later 
this.Hide(); 

然后用这个登录页面上展示主窗口再次一旦用户已经登录:

// Code for Login window 

// This code finds the main window again and shows it 
Application.Current.MainWindow.Show(); 
+0

什么事件你会把这个,让用户没有看到主窗口第一? – Sako73 2011-04-19 00:58:44

+0

@ Sako73如果你把我给你的第一部分代码放到MainWindow构造函数中,它将很好地工作。然后,当加载MainWindow时,它将立即打开登录窗口,并隐藏MainWindow。 – 2011-04-19 01:08:21