在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);
我读了一些关于它的文章,但是我还没有解决问题,不知道吗?
答案 0 :(得分:1)
我认为,当您更改CanExecute
委托中指定的属性时,需要在命令上调用方法。
XF类似于ChangeCanExecute
()。
而且我不记得mvvmcross的名字了:)
已编辑:对于MvvmCross,它是RaiseCanExecuteChanged
。
private bool _doSomethingIsEnabled;
public bool DoSomethingIsEnabled
{
get => _doSomethingIsEnabled;
set
{
_doSomethingIsEnabled = value;
DoSomethingCommand.ChangeCanExecute();
}
}