Estou criando um login usando um window control
para permitir que um usuário faça login em um WPF
aplicativo que estou criando.
Até agora, criei um método que verifica se o usuário inseriu as credenciais corretas para o username
e password
em a textbox
na tela de login, binding
dois properties
.
Eu consegui isso criando um bool
método, assim;
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();
}
Eu também tenho um command
que eu bind
no meu botão dentro do xaml
mesmo;
<Button Name="btnLogin" IsDefault="True" Content="Login" Command="{Binding ShowLoginCommand}" />
Ao inserir o nome de usuário e a senha ele executa o código apropriado, esteja certo ou errado. Mas como posso fechar esta janela do ViewModel quando o nome de usuário e a senha estão corretos?
Eu já tentei usar um, dialog modal
mas não deu muito certo. Além disso, em meu app.xaml, fiz algo como o seguinte, que carrega a página de login primeiro e, depois de verdadeiro, carrega o aplicativo 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);
}
}
Pergunta: Como posso fechar o Login Window control
do ViewModel?
Desde já, obrigado.