2011-04-18 44 views
23

pregunta estúpidamente simple que no puedo entender.¿Cómo cambiar las ventanas de WPF?

Tengo una aplicación WPF y quiero mostrar primero un cuadro de diálogo de inicio de sesión (antes de que aparezca la ventana principal).

Si el usuario inicia sesión correctamente, entonces quiero mostrar la ventana principal; si no, quiero salir de la aplicación.

¿Cómo se hace esto correctamente?

Respuesta

41

Creo que descubrí lo que estaba tratando de hacer.

1) Necesitaba configurar el "StartupUri" en el App.xaml en "Logon.xaml", donde Logon.xaml es mi ventana de inicio de sesión.

2) en el controlador de eventos LogonButton_Click, he añadido la siguiente

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

Esto parece lograr lo que quiero.

3

Si desea que aparezca una nueva ventana que permita al usuario ingresar su información de inicio de sesión, entonces he agregado algunos códigos a continuación. Sin embargo, crear un verdadero cuadro de diálogo modal es un poco más complicado en WPF, así que no lo he explicado aquí. Hay información sobre los cuadros de diálogo modales en WPF aquí: http://msdn.microsoft.com/en-us/library/aa969773.aspx

Desde el MainWindow puede abrir la ventana de acceso y ocultar la ventana principal con esto:

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

A continuación, utilice esto en la página de inicio de sesión para mostrar la ventana principal de nuevo una vez que el usuario ha iniciado sesión:

// Code for Login window 

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

¿En qué evento pondría esto para que el usuario no vea primero la ventana principal? – Sako73

+0

@ Sako73 Si toma el primer bit del código que le di y lo pone en el constructor MainWindow que funcionará muy bien. Luego, cuando se cargue MainWindow, se abrirá de inmediato la ventana de inicio de sesión y se ocultará MainWindow. –

Cuestiones relacionadas