Формат 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 уровня Activity/View DataContext является ViewModel, но для sub-View axml DataContext обычно будет дочерним объектом ViewModel, например. внутри ListView DataContext может быть элементом внутри List или ObservableCollection, принадлежащим ViewModel.
Чтобы указать несколько привязок, вы можете использовать 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);
}
}
и где этот преобразователь инициализируется во время установки - например. посмотрите, как свойства Преобразователи используются в Поиск в Твиттере
Одним из примеров, показывающих несколько привязок в работе, является BestSellers — см. Привязка кликов и текста в элементе списка https://github.com/slodge/MvvmCross/blob/master/Sample%20-%20BestSellers/BestSellers/BestSellers.Droid/Resources/Layout/ListItem_Category.axml
person
Stuart
schedule
21.05.2012