2013-01-09 1 views
0

MvxBindableListView가있는 기본보기가 있습니다. 항목 템플릿에는 TextViews, ImageView 등의 컨테이너로 RelativeLayout이 있습니다.ItemTemplate 변경 RelativeLayout MvvmCross가있는 모델 속성을 기반으로하는 배경색

데이터가 목록에 바인딩되어 있기 때문에 RelativeLayout의 배경색을 변경할 수 있어야합니다.

그럴 수 있습니까?

+0

가능합니다. 당신은 그것에 대한 사용자 지정 바인딩을 할 필요가있을 것이다. ViewModel에서 Color 자체를 사용하려는 경우 Color Plugin이 도움이 될 수 있습니다 - 죄송합니다. 이것은 단지 의견 일뿐입니다. – Stuart

답변

0

색상은 10 일부터가는 점수를 가지고 가정, 예를 들어

(색상 플러그인을 사용하여) MvxColorConverters를 사용하여 비교적 쉽게 속성보기에 바인딩 할 수 있습니다, 당신은 값에 따라 텍스트보기 색상 수 이 컨버터는 다음과 같은보기에서 사용할 수있는

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는 Background 속성 자체가 읽기 전용이므로 SetBackgroundColor() 메서드에 액세스하는 작은 사용자 정의 바인딩을 작성합니다.

관련 문제