Форматът на JSON, използван в израза за обвързване, е речник на име MvxJsonBindingDescriptions
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 е самият източник на обвързване.
За ниво Activity/View axml 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);
}
}
и къде този конвертор се инициализира по време на настройка - напр. вижте как свойствата на Класът Converters се използва в TwitterSearch
Една проба, която показва множество обвързвания в действие, е Bestsellers - вижте Click and Text bounded в елемента от списъка https://github.com/slodge/MvvmCross/blob/master/Sample%20-%20BestSellers/BestSellers/BestSellers.Droid/Resources/Layout/ListItem_Category.axml
person
Stuart
schedule
21.05.2012