Saya membuat sebuah Login menggunakan a window control
untuk memungkinkan pengguna login ke WPF
aplikasi yang saya buat.
Sejauh ini, saya telah membuat metode yang memeriksa apakah pengguna telah memasukkan kredensial yang benar untuk username
dan password
di textbox
layar login, binding
dua properties
.
Saya telah mencapai ini dengan membuat bool
metode, seperti;
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();
}
Saya juga memiliki command
yang saya bind
ke tombol saya dalam xaml
seperti itu;
<Button Name="btnLogin" IsDefault="True" Content="Login" Command="{Binding ShowLoginCommand}" />
Ketika saya memasukkan nama pengguna dan kata sandi, ia menjalankan kode yang sesuai, apakah itu benar, atau salah. Tetapi bagaimana saya bisa menutup jendela ini dari ViewModel jika nama pengguna dan kata sandi sudah benar?
Saya sebelumnya telah mencoba menggunakan a dialog modal
tetapi tidak berhasil. Selanjutnya, dalam app.xaml saya, saya telah melakukan sesuatu seperti berikut, yang memuat halaman login terlebih dahulu, kemudian setelah benar, memuat aplikasi sebenarnya.
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);
}
}
Pertanyaan: Bagaimana cara menutup Login Window control
dari ViewModel?
Terima kasih sebelumnya.