Saya membuat sebuah Login menggunakan a window controluntuk memungkinkan pengguna login ke WPFaplikasi yang saya buat.
Sejauh ini, saya telah membuat metode yang memeriksa apakah pengguna telah memasukkan kredensial yang benar untuk usernamedan passworddi textboxlayar login, bindingdua properties.
Saya telah mencapai ini dengan membuat boolmetode, 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 commandyang saya bindke tombol saya dalam xamlseperti 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 modaltetapi 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 controldari ViewModel?
Terima kasih sebelumnya.