Xamarin 我可以根据条件从Ios调用MVVM交叉命令方法吗?

Xamarin 我可以根据条件从Ios调用MVVM交叉命令方法吗?,xamarin,mvvmcross,Xamarin,Mvvmcross,在我的viewmodel中,我有以下MVVM交叉命令。我想根据iOS中的条件来调用它。这可能吗 命令 public IMvxCommand LoginCommand { get { return _loginCommand ?? (_loginCommand = new MvxCommand(async () => await ExecLoginClick())); } } iOS绑定 var bindings = this.CreateBindi

在我的viewmodel中,我有以下MVVM交叉命令。我想根据iOS中的条件来调用它。这可能吗

命令

public IMvxCommand LoginCommand
{
    get
    {
        return _loginCommand ?? (_loginCommand = new MvxCommand(async () => await ExecLoginClick()));
    }
}
iOS绑定

var bindings = this.CreateBindingSet<LoginView, LoginViewModel>();
bindings.Bind(username).To(vm => vm.Email);
bindings.Bind(password).To(vm => vm.Password);
bindings.Bind(login_button).To(vm => vm.LoginCommand);
bindings.Bind(forgot_button).To(vm => vm.ForgotCommand);
bindings.Bind(register_button).To(vm => vm.GetSignUpCommand);
//bindings.Bind(btn_facebook).To(vm=>vm.)
bindings.Apply();
var bindings=this.CreateBindingSet();
bindings.Bind(用户名).To(vm=>vm.Email);
bindings.Bind(password.To)(vm=>vm.password);
bindings.Bind(login_按钮).To(vm=>vm.LoginCommand);
bindings.Bind(忘记按钮).To(vm=>vm.ForgotCommand);
bindings.Bind(register_按钮).To(vm=>vm.GetSignUpCommand);
//bindings.Bind(btn_facebook).To(vm=>vm.)
bindings.Apply();

您可以为此使用CanExecute

public IMvxCommand LoginCommand
{
得到
{
返回\u登录命令??
(_loginCommand=new MvxAsyncCommand(ExecLoginClick,CanLogin));
}
}
私有boolcanlogin()
{
如果(/*您的情况*/)
{
返回true;
}
返回false;
}
私有任务ExecLoginClick()
{
//...
}
每种方法都会影响你的病情。你必须打电话

LoginCommand.RaiseCanExecuteChanged();
根据CanExecute的返回值禁用或启用该按钮

如果要从视图中执行命令,应继承通用
MvxViewController
MVX活动

公共类登录视图:MvxViewController
//或
公共类LoginView:MVX活动
然后你可以打电话

if(/*条件*/)
{
ViewModel.LoginCommand.execute();
}

是否要从viewcontroller手动执行该命令?或者它应该只执行,如果你点击按钮,条件为真?嗨,我想在ios中有一些条件,比如if(条件为真),然后调用mvvm命令,否则不要调用。我是MVVMCross的新手,所以不知道有没有可能。。简而言之,我想从viewcontroller手动调用命令。感谢回复,我们可以通过创建viewmodel的对象来调用,并从Ios/Android调用该方法吗?谢谢champ。你救了我一天。我还有一些其他的问题,但我会在其他的帖子里问。