我正在使用mvvmcross向Android视图布局数据介绍我的视图。

从单纯跳线示例,我可以看到要将值绑定到我这样做的属性:

  <EditText
    android:hint="Subtotal"
    android:gravity="left"
    android:inputType="numberDecimal"
    android:maxLines="1"
    android:numeric="decimal"        
    local:MvxBind="{'Text':{'Path':'SubTotal','Converter':'Float'}}"
  />
. 因此,文本绑定到ViewModel的小计属性。但是如何绑定到多个属性?在我的情况下,我想绑定一个viewmodel属性,称为打开元素的TextColor属性。我无法添加另一个mvxbind,我无法将mvxbind设置为数组。

有帮助吗?

解决方案

绑定表达式中使用的JSON的格式是名为 mvxjsonbindingdescription s

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; }
}
.

此用于:

  • 字典key name是绑定的目标(视图)属性。
  • 绑定生成的Path属性是绑定的源(datacontext)属性 - 如果未指定Path,则整个datacontext本身是绑定源。

对于活动/视图级别AXML,DATAContext是ViewModel - 但是对于子视图Axml,DataContext通常是ViewModel的子对象 - 例如, ListView内部DataContext可能是ViewModel拥有的列表中的列表或观察镜头中的项目。


要指定多个绑定,您可以使用JSON:

 {
      'TargetProperty1':{'Path':'SourceProperty1'},
      'TargetProperty2':{'Path':'SourceProperty2'}
 }
.

对于您的特定示例,这可能是:

local:MvxBind="
       {
          'Text':{'Path':'SubTotal','Converter':'Float'}, 
          'TextColor':{'Path':'HigherLower','Converter':'MyColorConverter'}
       }"
.

您的视图显示的内容如:

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);
    }
}
.

以及在设置期间初始化转换器的位置 - 例如了解转换器类用于 twittersearch


在工作中显示多个绑定的一个样本是estsellers - 请参阅列表项 https://github.com/slodge/mvvmcross/blob/master/sample%20-%20bestsellers/bestsellers/bestsellers.droid/资源/布局/ listitem_category.axml

其他提示

path':'更高的手术口必须这样做:

local:MvxBind="{'Text':{'Path':'SubTotal','Converter':'Float'}, 'TextColor':{'Path':'HigherLower','Converter':'Color'}}"
.

注意:

bind="{ 'Text':{xx}, 'Other':{yy} }"
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top