2013-01-09 24 views
0

我有一個帶有MvxBindableListView的主視圖。 項目模板有一個RelativeLayout作爲容器與TextViews,ImageView等..裏面。更改ItemTemplate基於帶MvvmCross的模型屬性的RelativeLayout背景顏色

我需要能夠根據數據綁定到列表來改變RelativeLayout的背景顏色。

這可能嗎?

+0

這是可能的,是的。你需要爲它做一個自定義綁定。如果您打算在ViewModel中使用Color本身,那麼您可能會發現Color Plugin有用 - 對不起,這只是一條評論 - 有點忙! – Stuart

回答

0

顏色可以被綁定到相當容易地使用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屬性本身是隻讀的。