我正在尝试根据用户输入禁用和启用按钮。我实现了fody属性更改Nuget包,以帮助我减少我的代码。
它工作了,当我开始输入时,我的LoginViewModel中的断点被击中并显示我的值每次我输入
时,ViewModel都会被击中,但我似乎不能触发CanLogin()方法
[AddINotifyPropertyChangedInterface]
public class LoginPageViewModel {
public ICommand OpenRegisterPopupCommand { get; set; }
public ICommand Register { get; set; }
public ICommand Login { get; set; }
public Users Users { get; set; }
public bool IsPopUpOpen { get; set; }
public LoginPageViewModel() {
Users = new Users();
Login = new Command(LoginAction, CanLogin);
Register = new Command(RegisterAction);
OpenRegisterPopupCommand = new Command(() => {
IsPopUpOpen = true;
});
}
private void LoginAction(object obj) {
throw new NotImplementedException();
}
private bool CanLogin(object arg) {
if (Users != null && !string.IsNullOrEmpty(Users.Email) && !string.IsNullOrEmpty(Users.Password)) {
return true;
}
return false;
}
您正在使用具有CanExecute
方法的Command
。如果CanExecute
方法返回false,该命令将无法执行。但是这种验证并不是一直发生的,你必须触发它。
当您修改任何相关属性(如Users
,Users.Email
或Users.Password
)时,必须调用Login.ChangeCanExecute()
,这将触发命令的CanExecute
验证。
命令的文档。