2017-09-28 35 views
0

在我特殊的应用程序中,当IsSelected为false时,我希望背景是透明的,即Transparent = true。我怀疑我必须写一个转换器,但也许有一个更简单的方法?使用MvvmCross,如何获得布尔的“反向”绑定?

set.Bind(selectedBox).For(v => v.Transparent).To(vm => vm.IsSelected).OneWay(); 

貌似有一个WithConversion < ...>可能性。也许我需要一个NotValueConverter?难以置信的是,这还没有在某个地方实施......

更新。我增加了以下我的核心

public class NotConverter : MvxValueConverter<bool, bool> 
{ 
    protected override bool Convert(bool value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return !value; 
    } 

    protected override bool ConvertBack(bool value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return !value; 
    } 
} 

,但它似乎并没有被扫描拾起并

set.Bind(selectedBox).For(v => v.Transparent).To(vm => vm.IsSelected).WithConversion("Not").OneWay(); 

没有任何区别。

回答

1

转换器需要以ValueConverter结尾由MvvmCross自动提取。您也可以使用通用类型来使用WithConversion

set.Bind(selectedBox).For(v => v.Transparent).To(vm => vm.IsSelected).WithConversion<NotConverter>().OneWay(); 

我认为“不”是一个内置的转换器,我已经用它在Android,但我不能到目前为止找到这样的东西。