Tworzę login przy użyciu a, window control
aby umożliwić użytkownikowi zalogowanie się do WPF
aplikacji, którą tworzę.
Do tej pory stworzyłem metodę, która sprawdza, czy użytkownik podał poprawne dane uwierzytelniające dla username
iw password
a textbox
na ekranie logowania, binding
dwa properties
.
Osiągnąłem to, tworząc taką bool
metodę;
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();
}
Mam też, command
że mam bind
do mojego przycisku w xaml
podobny sposób;
<Button Name="btnLogin" IsDefault="True" Content="Login" Command="{Binding ShowLoginCommand}" />
Kiedy wprowadzam nazwę użytkownika i hasło, wykonuje odpowiedni kod, niezależnie od tego, czy jest poprawny, czy zły. Ale jak mogę zamknąć to okno z ViewModel, jeśli zarówno nazwa użytkownika, jak i hasło są poprawne?
Wcześniej próbowałem użyć a, dialog modal
ale nie wyszło. Co więcej, w moim app.xaml wykonałem coś podobnego do poniższego, który najpierw ładuje stronę logowania, a następnie ładuje rzeczywistą aplikację.
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);
}
}
Pytanie: Jak mogę zamknąć dane logowania Window control
z ViewModel?
Z góry dziękuję.