Tworzę login przy użyciu a, window controlaby umożliwić użytkownikowi zalogowanie się do WPFaplikacji, którą tworzę.
Do tej pory stworzyłem metodę, która sprawdza, czy użytkownik podał poprawne dane uwierzytelniające dla usernameiw passworda textboxna ekranie logowania, bindingdwa properties.
Osiągnąłem to, tworząc taką boolmetodę;
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 binddo mojego przycisku w xamlpodobny 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 modalale 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 controlz ViewModel?
Z góry dziękuję.