在我的特定应用程序中,当IsSelected为false时,我希望背景为透明,即Transparent = true。我怀疑我必须写一个转换器,但也许有一种更简单的方法?
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();
没有任何区别。
答案 0 :(得分:1)
转换器需要以ValueConverter
结尾才能被MvvmCross自动接收。您还可以使用通用类型来使用WithConversion
。
set.Bind(selectedBox).For(v => v.Transparent).To(vm => vm.IsSelected).WithConversion<NotConverter>().OneWay();
我认为&#34;不是&#34;是一个内置的转换器,我已经在Android上使用它,但到目前为止我无法找到任何东西。
答案 1 :(得分:0)
我对此感到很好奇,所以我开始浏览MvvmCross代码。在Android上,您可以执行以下操作:
Class_Loader
可行,但实际上是MyClass1.Number
而不是任何app:MvxBind="Enabled !SomeBoolean"
。因此,以流畅的形式应该可以解决问题:
MvxInvertedValueCombiner
我实际上从未以这种方式使用过它,但是它似乎可以工作。此外,似乎似乎在任何值转换器之前都应用了值组合器,因此,假设您对ValueConverter
感到厌倦,可以在Android上执行以下操作:
set.Bind(selectedBox).For(v => v.Transparent).ByCombining(new MvxInvertedValueCombiner(), vm => vm.IsSelected)