Je crée une connexion en utilisant un window control
pour permettre à un utilisateur de se connecter à un WPF
que je suis en train de créer.
Jusqu'à présent, j'ai créé une méthode qui vérifie si l'utilisateur a saisi les informations d'identification correctes pour l'interface utilisateur. username
et password
dans un textbox
sur l'écran de connexion, binding
deux properties
.
J'y suis parvenu en créant un bool
comme suit ;
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();
}
J'ai aussi un command
que je bind
à mon bouton dans le xaml
comme ça ;
<Button Name="btnLogin" IsDefault="True" Content="Login" Command="{Binding ShowLoginCommand}" />
Lorsque je saisis le nom d'utilisateur et le mot de passe, il exécute le code approprié, qu'il soit bon ou mauvais. Mais comment puis-je fermer cette fenêtre à partir du ViewModel lorsque le nom d'utilisateur et le mot de passe sont corrects ?
J'ai déjà essayé d'utiliser un dialog modal
mais ça n'a pas vraiment marché. En outre, dans mon app.xaml, j'ai fait quelque chose comme ce qui suit, qui charge d'abord la page de connexion, puis, une fois que c'est vrai, l'application proprement dite.
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);
}
}
Question : Comment puis-je fermer l'ouverture de session Window control
depuis le ViewModel ?
Merci d'avance.