我正在努力让以下代码发挥作用。我想将绑定到ViewModel的UIView(ButtonAnswer)的不透明度更改。我已经尝试了很多,但我无法让它工作:
以下行正在运作:
this.CreateBinding(ButtonAnswer).For(v => v.Hidden).To((AnswerViewModel vm) => vm.Selected).Apply();
但这不是:
this.CreateBinding(ButtonAnswer).For(v => v.Opacity).To((AnswerViewModel vm) => vm.Selected).Apply();
vm.Selected是一个布尔。
我不知道如何解决这个问题。我希望有人可以帮助我,或者可以分享一些代码。
谢谢!
答案 0 :(得分:1)
您可以使用ValueConverter
完成此操作。
例如(我假设属性Opacity
的类型为int
):
public class OpacityValueConverter : MvxValueConverter<bool, int>
{
protected override int Convert(bool visible, Type targetType, object parameter, CultureInfo cultureInfo)
{
return visible ? 100 : 0;
}
}
绑定代码
this.CreateBinding(ButtonAnswer)
.For(v => v.Opacity)
.To((AnswerViewModel vm) => vm.Selected)
.WithConversion(new OpacityValueConverter(), null)
.Apply();
有关价值转换器的更多信息,请访问: https://www.mvvmcross.com/documentation/fundamentals/value-converters