Sto creando un accesso utilizzando a window controlper consentire a un utente di accedere a WPFun'applicazione che sto creando.
Finora, ho creato un metodo che controlla se l'utente ha inserito le credenziali corrette per il usernamee passwordin a textboxnella schermata di accesso, bindingdue properties.
Ho ottenuto questo risultato creando un boolmetodo, in questo modo;
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();
}
Ho anche un commandche ho bindal mio pulsante in questo xamlmodo;
<Button Name="btnLogin" IsDefault="True" Content="Login" Command="{Binding ShowLoginCommand}" />
Quando inserisco il nome utente e la password, esegue il codice appropriato, che sia giusto o sbagliato. Ma come posso chiudere questa finestra dal ViewModel quando sia il nome utente che la password sono corretti?
Ho già provato a usare a dialog modalma non ha funzionato del tutto. Inoltre, all'interno del mio app.xaml, ho fatto qualcosa di simile al seguente, che carica prima la pagina di accesso, quindi, una volta vero, carica l'applicazione effettiva.
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);
}
}
Domanda: come posso chiudere il login Window controlda ViewModel?
Grazie in anticipo.