2011-04-18 28 views
23

Aptalca basit bir soru çözemiyorum.WPF pencereleri nasıl değiştirilir?

Bir WPF uygulamasına sahibim ve önce bir Oturum Aç iletişim kutusu görüntülemek istiyorum (ana pencere görünmeden önce).

Kullanıcı başarıyla oturum açarsa, ana pencereyi göstermek istiyorum, değilse, uygulamadan çıkmak istiyorum.

Bunu nasıl doğru yapıyor?

cevap

41

ben yapmaya çalıştığım şey buldum.

1) App.xaml dosyasındaki "StartupUri" değerini Logon.xaml oturum açma pencerem olan "Logon.xaml" olarak ayarladım. LogonButton_Click olay işleyicisi içinde

2), ben

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

aşağıdaki Bu benim istediğim başarmak gibi görünüyor eklendi.

3

Kullanıcının oturum açma bilgilerini girmesine izin vermek için yeni bir pencere görüntülenmesini isterseniz, aşağıdan bir kod ekledim. Ancak, gerçek bir Modal İletişim Kutusu oluşturma, WPF'de biraz daha karmaşıktır, bu yüzden burada açıklamamıştım.

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

Sonra göstermek için giriş sayfasındaki bu kullanın: Eğer giriş penceresi açın ve şu ana penceresini gizleyebilirsiniz MainWindow itibaren http://msdn.microsoft.com/en-us/library/aa969773.aspx

: Burada WPF kalıcı iletişim kutuları hakkında bilgi bulunmaktadır ana pencere yine kullanıcı oturum sonra:

// Code for Login window 

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

Kullanıcının önce ana pencereyi görmemesi için bunu hangi etkinliğe koyardınız? – Sako73

+0

@ Sako73 Kodun ilk bitini alırsanız, size verdim ve güzelce çalışacak olan MainWindow yapıcısına koydum. Sonra MainWindow yüklendiğinde, hemen giriş penceresini açar ve MainWindow'u gizler. –