0
我有一個帶有MvxBindableListView的主視圖。 項目模板有一個RelativeLayout作爲容器與TextViews,ImageView等..裏面。更改ItemTemplate基於帶MvvmCross的模型屬性的RelativeLayout背景顏色
我需要能夠根據數據綁定到列表來改變RelativeLayout的背景顏色。
這可能嗎?
我有一個帶有MvxBindableListView的主視圖。 項目模板有一個RelativeLayout作爲容器與TextViews,ImageView等..裏面。更改ItemTemplate基於帶MvvmCross的模型屬性的RelativeLayout背景顏色
我需要能夠根據數據綁定到列表來改變RelativeLayout的背景顏色。
這可能嗎?
顏色可以被綁定到相當容易地使用MvxColorConverters(使用彩色插件)
例如查看屬性,假設你有一個分數,其從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'}}" />
對於設置視圖的背景顏色,你可能會東東d寫一個小的自定義綁定 - 訪問SetBackgroundColor()方法 - 因爲Background屬性本身是隻讀的。
這是可能的,是的。你需要爲它做一個自定義綁定。如果您打算在ViewModel中使用Color本身,那麼您可能會發現Color Plugin有用 - 對不起,這只是一條評論 - 有點忙! – Stuart