按钮的实时验证,使用fody



我正在尝试根据用户输入禁用和启用按钮。我实现了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.EmailUsers.Password)时,必须调用Login.ChangeCanExecute(),这将触发命令的CanExecute验证。

命令的文档。

最新更新