【发布时间】:2018-12-08 18:58:21
【问题描述】:
我正在基于 Caliburn.Micro mvvm 框架在我的应用程序中制作登录窗口。那么,如何从由 Caliburn.Micro 初始化的登录窗口中的TryClose() 方法返回一个属性(例如,true,如果用户传递了良好的数据或false,如果他传递了错误的凭据)?如何从IWindowManager.ShowDialog()打开的窗口获取信息?
首先,我的 MainWindowViewModel.cs:
using Caliburn.Micro;
namespace TaskManager.ViewModels
{
class MainWindowViewModel : Conductor<IScreen>.Collection.OneActive
{
protected override void OnViewLoaded(object view)
{
IWindowManager manager = new WindowManager();
//Login page, context is data with user's lists
LoginViewModel loginView = new LoginViewModel(context);
manager.ShowDialog(loginView, null, null);
//here i want to get info, if i get logged properly or not
}
public void LoadUserInfoPage() //here starts "main" program
{
ActivateItem(new UserInfoViewModel());
}
//and so on...
}
}
我的LoginViewModel.cs:
namespace TaskManager.ViewModels
{
class LoginViewModel : Screen
{
public string Login { get; set; }
public string Password { get; set; }
public LoginViewModel(FakeData context)
{
this.context = context;
}
public void LoginButton()
{
bool check = Services.Login.IsValid(Login, Password, context);
if(check) //if login is OK, check == true
TryClose();
}
private FakeData context { get; set; } //data is here
}
}
那么,我的IsValid()方法:
namespace TaskManager.Services
{
static class Login
{
static public bool IsValid(string login, string password, FakeData context)
=> context.users.Any(i => i.Login == login);
//i know it is bad, but its only example
}
}
按钮,打开和关闭窗口效果很好(也可以从文本框中读取)。如果用户传递了良好的数据,我只想获取信息(也许通过参考?)。
感谢您的建议!
【问题讨论】:
标签: c# wpf mvvm caliburn.micro