我使用 window control
创建一个登录,以允许用户登录到我正在创建的 WPF
应用程序。
到目前为止,我已经创建了一个方法来检查用户是否在登录屏幕上的 textbox
中输入了 username
和 password
的正确凭据,binding
和 properties
。
我通过创建 bool
方法实现了这一点,如下所示;
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();
}
I also have a command
that I bind
to my button within the xaml
like so;
<Button Name="btnLogin" IsDefault="True" Content="Login" Command="{Binding ShowLoginCommand}" />
当我输入用户名和密码时,它会执行适当的代码,无论它是正确的还是错误的。但是,当用户名和密码都正确时,如何从 ViewModel 关闭此窗口?
我以前试过使用 dialog modal
,但是效果不太好。此外,在 app.xaml 中,我做了如下操作,首先加载登录页面,一旦为 true,就加载实际的应用程序。
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);
}
}
问: 如何从 ViewModel 关闭登录 Window control
?
先谢谢你。