2017-09-28 30 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,但我不能到目前爲止找到這樣的東西。