0

我有一个带有 MvxBindableListView 的主视图。项目模板有一个 RelativeLayout 作为容器,里面有 TextViews、ImageView 等。

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

那可能吗?

4

1 回答 1

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'}}" />

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

于 2013-01-09T22:35:59.730 回答