使用Command时,在Xamarin.Forms,MvvmCross中禁用按钮的最佳实践是什么?

时间:2019-08-01 14:34:56

标签: button xamarin.forms command mvvmcross

在Xamarin.Forms MvvmCross项目中禁用按钮命令时遇到一些麻烦。即使使用CanExecute属性,IsEnabled似乎也无法正常工作。

在页面的yaml文件上:

<Button Text="DoSomething" Command="{Binding DoSomethingCommand}" IsEnabled="{Binding DoSomethingIsEnabled}"/>

在视图模型上:

public IMvxCommand DoSomethingCommand => new MvxCommand(() => System.Diagnostics.Debug.WriteLine("Is enabled"));

or 

public IMvxCommand DeviceButtonCommand => new MvxCommand(() => System.Diagnostics.Debug.WriteLine("Is enabled"), () => DoSomethingIsEnabled);

我读了一些关于它的文章,但是我还没有解决问题,不知道吗?

1 个答案:

答案 0 :(得分:1)

我认为,当您更改CanExecute委托中指定的属性时,需要在命令上调用方法。 XF类似于ChangeCanExecute()。 而且我不记得mvvmcross的名字了:)

已编辑:对于MvvmCross,它是RaiseCanExecuteChanged

private bool _doSomethingIsEnabled;
public bool DoSomethingIsEnabled
{
    get => _doSomethingIsEnabled;
    set
    {
        _doSomethingIsEnabled = value;
        DoSomethingCommand.ChangeCanExecute();
    }
}