Ich erstelle ein Login mit a window control, damit sich ein Benutzer bei einer WPFAnwendung anmelden kann , die ich erstelle.
Bisher habe ich eine Methode erstellt, die prüft, ob der Benutzer die richtigen Anmeldeinformationen für die usernameund passwordin a textboxauf dem Anmeldebildschirm eingegeben hat , bindingzwei properties.
Ich habe dies erreicht, indem ich eine boolMethode wie diese geschaffen habe;
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();
}
Ich habe auch eine command, die ich bindzu meinem Knopf innerhalb der xamlgleichen so;
<Button Name="btnLogin" IsDefault="True" Content="Login" Command="{Binding ShowLoginCommand}" />
Wenn ich den Benutzernamen und das Passwort eingebe, wird der entsprechende Code ausgeführt, unabhängig davon, ob er richtig oder falsch ist. Aber wie kann ich dieses Fenster im ViewModel schließen, wenn sowohl Benutzername als auch Passwort korrekt sind?
Ich habe zuvor versucht, ein zu verwenden, dialog modalaber es hat nicht ganz geklappt. Darüber hinaus habe ich in meiner app.xaml Folgendes ausgeführt: Die Anmeldeseite wird zuerst geladen, und sobald sie wahr ist, wird die eigentliche Anwendung geladen.
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);
}
}
Frage: Wie kann ich den Login Window controlüber das ViewModel schließen?
Danke im Voraus.