gpt4 book ai didi

c# - 从 ViewModel 关闭窗口

转载 作者:IT王子 更新时间:2023-10-29 03:39:49 25 4
gpt4 key购买 nike

<分区>

我正在使用 窗口控件 创建登录以允许用户登录到我正在创建的 WPF 应用程序。

到目前为止,我已经创建了一个方法来检查用户是否在 文本框 中输入了正确的 usernamepassword 凭证> 在登录屏幕上,绑定(bind) 两个属性

我通过创建一个 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();
}

我还有一个 command,我将它 bindxaml 中的按钮;

<Button Name="btnLogin" IsDefault="True" Content="Login" Command="{Binding ShowLoginCommand}" />

当我输入用户名和密码时,它会执行适当的代码,无论是对还是错。但是,当用户名和密码都正确时,如何从 ViewModel 关闭此窗口?

我之前尝试过使用 dialog modal 但效果不佳。此外,在我的 app.xaml 中,我做了类似下面的事情,它首先加载登录页面,然后一旦为真,加载实际的应用程序。

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 关闭登录窗口控件

提前致谢。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com