バインディング式で使用されるJSONの形式は、MvxJsonBindingDescriptionという名前の辞書です。
public class MvxJsonBindingDescription
{
public string Path { get; set; }
public string Converter { get; set; }
public string ConverterParameter { get; set; }
public string FallbackValue { get; set; }
public MvxBindingMode Mode { get; set; }
}
これは次の場合に使用されます:
- バインディングのターゲット(表示)プロパティであるディクショナリキー名。
- バインディング
Path
プロパティはバインディングのソース(DataContext)プロパティですPath
。指定されていない場合は、DataContext自体全体がバインディングソースになります。
アクティビティ/ビューレベルのaxmlの場合、DataContextはViewModelですが、サブビューaxmlの場合、DataContextは通常ViewModelの子オブジェクトになります。たとえば、ListView内では、DataContextはViewModelが所有するListまたはObservableCollection内のアイテムである可能性があります。 。
複数のバインディングを指定するには、次のようなJSONを使用できます。
{
'TargetProperty1':{'Path':'SourceProperty1'},
'TargetProperty2':{'Path':'SourceProperty2'}
}
あなたの特定の例では、これは次のようになります。
local:MvxBind="
{
'Text':{'Path':'SubTotal','Converter':'Float'},
'TextColor':{'Path':'HigherLower','Converter':'MyColorConverter'}
}"
ここで、ViewModelは次のようなものです。
public class MyViewModel : IMvxViewModel
{
public float SubTotal { get; set; }
public bool HigherLower { get; set; }
// more code here
}
コンバーターは次のようなものです。
public class MyColorConverter : MvxBaseColorConverter
{
protected override MvxColor Convert(object value, object parameter, CultureInfo culture)
{
return ((bool)value) ? new MvxColor(255,0,0) : new MvxColor(0,255,0);
}
}
セットアップ中にそのコンバーターが初期化される場所-たとえば、 ConvertersクラスのプロパティがTwitterSearchでどのように使用されるかを確認します
動作中の複数のバインディングを示す1つのサンプルはBestSellersです-リストアイテムhttps://github.com/slodge/MvvmCross/blob/master/Sample%20-%20BestSellers/BestSellers/BestSellers.Droid/Resourcesのクリックとテキストバインドを参照してください/Layout/ListItem_Category.axml