根据具有MvvmCross的模型属性更改ItemTemplate RelativeLayout背景颜色

时间:2013-01-09 13:56:10

标签: android xamarin.android relativelayout mvvmcross

我有一个带有MvxBindableListView的主视图。 Item模板有一个RelativeLayout作为容器,包含TextViews,ImageView等.. inside。

我需要能够根据绑定到列表的数据更改RelativeLayout的背景颜色。

这可能吗?

1 个答案:

答案 0 :(得分:0)

使用MvxColorConverters(使用Color插件)可以非常轻松地将颜色绑定到View属性

例如,假设您的分数从1到10,您可以根据值为文本视图着色:

public class ScoreToColorConverter : MvxBaseColorConverter
{
    private static readonly MvxColor RedColor = new MvxColor(0xff, 0x00, 0x00);
    private static readonly MvxColor GreenColor = new MvxColor(0x00, 0xff, 0x00);

    protected override MvxColor Convert(object value, object parameter, CultureInfo culture)
    {
        var intValue = (int)value;

        return (intValue > 5) ? RedColor : GreenColor;
    }
}

然后可以在视图中使用此转换器:

      <TextView
          style="?OurTextViewBodyStyle"
          android:textColor="@color/red"
          local:MvxBind="{'Text':{'Path':'Score'},'TextColor':{'Path':'Status','Converter':'ScoreToColor'}}" />

要设置View的背景颜色,您可能需要编写一个小的自定义绑定 - 它访问SetBackgroundColor()方法 - 因为Background属性本身是只读的。