0

我试图根据用户输入禁用和启用按钮。我实现了 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;
        }
4

1 回答 1

1

您正在使用Command带有方法的CanExecute方法。如果该CanExecute方法返回 false,则该命令将无法执行。但是这种验证不会一直发生,你必须触发它。

Login.ChangeCanExecute()当您修改任何相关属性(如UsersUsers.Email或)时,您必须调用Users.Password,这将触发CanExecute命令的验证。

命令文档

于 2021-10-06T11:04:07.140 回答