我正在努力实现:
我希望当Bytes为空时,即在我拍照之前,我的按钮才可见。
我尝试了以下内容:
set.Bind (btnTakePhoto).For("Visibility").To(x => x.Bytes).WithConversion("InvertedVisibility");
和
set.Bind (btnTakePhoto).For("InvertedVisibility").To(x => x.Bytes).WithConversion("InvertedVisibility");
和
set.Bind (btnTakePhoto).For("InvertedVisibility").To(x => x.Bytes).WithConversion("Visibility");
以及其他几种变体。
答案 0 :(得分:2)
正确的方法是
set.Bind (btnTakePhoto)
.For("Visibility")
.To(x => x.Bytes)
.WithConversion("InvertedVisibility");
答案 1 :(得分:1)
值为null时,无法设置可见性。将它绑定到与Bytes关联的新布尔属性,并在Bytes的setter中调用OnPropertyChanged(nameof(IsTakePhotoVisible)),如下所示:
视图模型:
public bool IsTakePhotoVisible => Bytes != null;
public byte[] Bytes {
get {return bytes;}
set
{
SetValue(ref bytes, value);
OnPropertyChanged(nameof(IsTakePhotoVisible));
}
}
视图:
set.Bind (btnTakePhoto).For("Visibility").To(x => x.IsTakePhotoVisible).WithConversion("InvertedVisibility");
不要忘记从nuget添加Mvvmcross Visibility插件,否则它将无法正常工作......