Estoy creando un inicio de sesión usando un window control
para permitir que un usuario inicie sesión en unWPF
aplicación que estoy creando.
Hasta ahora, he creado un método que verifica si el usuario ha ingresado las credenciales correctas para username
y password
en textbox
la pantalla de inicio de sesión, binding
dos properties
.
Lo he logrado creando un bool
método, así;
public bool CheckLogin()
{
var user = context.Users.Where(i => i.Username == this.Username).SingleOrDefault();
if (user == null)
{
MessageBox.Show("Unable to Login, incorrect credentials.");
return false;
}
else if (this.Username == user.Username || this.Password.ToString() == user.Password)
{
MessageBox.Show("Welcome " + user.Username + ", you have successfully logged in.");
return true;
}
else
{
MessageBox.Show("Unable to Login, incorrect credentials.");
return false;
}
}
public ICommand ShowLoginCommand
{
get
{
if (this.showLoginCommand == null)
{
this.showLoginCommand = new RelayCommand(this.LoginExecute, null);
}
return this.showLoginCommand;
}
}
private void LoginExecute()
{
this.CheckLogin();
}
También tengo un command
que yo bind
a mi botón dentro de lo xaml
similar;
<Button Name="btnLogin" IsDefault="True" Content="Login" Command="{Binding ShowLoginCommand}" />
Cuando ingreso el nombre de usuario y la contraseña, ejecuta el código apropiado, ya sea correcto o incorrecto. Pero, ¿cómo puedo cerrar esta ventana desde ViewModel cuando tanto el nombre de usuario como la contraseña son correctos?
Anteriormente intenté usar un dialog modal
pero no funcionó del todo. Además, dentro de mi app.xaml, he hecho algo como lo siguiente, que primero carga la página de inicio de sesión y luego, una vez verdadera, carga la aplicación real.
private void ApplicationStart(object sender, StartupEventArgs e)
{
Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
var dialog = new UserView();
if (dialog.ShowDialog() == true)
{
var mainWindow = new MainWindow();
Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
Current.MainWindow = mainWindow;
mainWindow.Show();
}
else
{
MessageBox.Show("Unable to load application.", "Error", MessageBoxButton.OK);
Current.Shutdown(-1);
}
}
Pregunta: ¿Cómo puedo cerrar el inicio Window control
de sesión desde ViewModel?
Gracias por adelantado.