Android 使用MvvmCross根据模型属性更改ItemTemplate RelativeLayout背景色

Android 使用MvvmCross根据模型属性更改ItemTemplate RelativeLayout背景色,android,xamarin.android,android-relativelayout,mvvmcross,Android,Xamarin.android,Android Relativelayout,Mvvmcross,我有一个带有MvxBindableListView的主视图。 项目模板有一个带有TextView、ImageView等的RelativeLayout as容器。。里面 我需要能够根据绑定到列表的数据更改RelativeLayout的背景颜色 这可能吗?可以使用MVxColorConverter(使用颜色插件)相当轻松地将颜色绑定到查看属性上 例如,假设分数在1到10之间,则可以根据以下值为文本视图着色: public class ScoreToColorConverter : MvxBaseCo

我有一个带有MvxBindableListView的主视图。 项目模板有一个带有TextView、ImageView等的RelativeLayout as容器。。里面

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


这可能吗?

可以使用MVxColorConverter(使用颜色插件)相当轻松地将颜色绑定到查看属性上

例如,假设分数在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()方法,因为Background属性本身是只读的。

有可能,是的。不过,您需要为它进行自定义绑定。如果您打算在ViewModel中使用颜色本身,那么您可能会发现颜色插件很有用-抱歉,这只是一个注释-有点忙!