使用MVVMCross将绑定到ViewModel的UIView的不透明度更改为在我的Xamarin iOS应用程序中无效

时间:2017-12-11 19:36:22

标签: xamarin.ios mvvmcross

我正在努力让以下代码发挥作用。我想将绑定到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是一个布尔。

我不知道如何解决这个问题。我希望有人可以帮助我,或者可以分享一些代码。

谢谢!

1 个答案:

答案 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