Ich erstelle ein Login mit a window control
, damit sich ein Benutzer bei einer WPF
Anwendung anmelden kann , die ich erstelle.
Bisher habe ich eine Methode erstellt, die prüft, ob der Benutzer die richtigen Anmeldeinformationen für die username
und password
in a textbox
auf dem Anmeldebildschirm eingegeben hat , binding
zwei properties
.
Ich habe dies erreicht, indem ich eine bool
Methode 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 bind
zu meinem Knopf innerhalb der xaml
gleichen 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 modal
aber 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.