안드로이드 레이아웃 요소에 여러 속성을 어떻게 바인딩합니까

StackOverflow https://stackoverflow.com//questions/10688603

  •  12-12-2019
  •  | 
  •  

문제

내 뷰 모델을 안드로이드 뷰 레이아웃에 데이터 바인딩하는 데 사용하고 있습니다.

단순 바인딩 예에서 나는 값을 속성에 바인딩하기 위해 이것을 수행한다는 것을 볼 수 있습니다:

  <EditText
    android:hint="Subtotal"
    android:gravity="left"
    android:inputType="numberDecimal"
    android:maxLines="1"
    android:numeric="decimal"        
    local:MvxBind="{'Text':{'Path':'SubTotal','Converter':'Float'}}"
  />

따라서 텍스트는 뷰 모델의 부분합 속성에 바인딩됩니다.그러나 하나 이상의 속성에 어떻게 바인딩합니까?내 경우에는 레이아웃 요소의 텍스트 색상 속성에 하이어로어라는 뷰 모델 속성을 바인딩하고 싶습니다.배열에 다른 바인드를 추가 할 수 없으며 배열에 바인드를 설정할 수 없습니다.

도움이 되었습니까?

해결책

바인딩 식에 사용되는 제손의 형식은 명명된 사전입니다 웹 사이트s

public class MvxJsonBindingDescription
{
    public string Path { get; set; }
    public string Converter { get; set; }
    public string ConverterParameter { get; set; }
    public string FallbackValue { get; set; }
    public MvxBindingMode Mode { get; set; }
}

이것은:

  • 사전 키 이름은 바인딩의 대상(보기)속성입니다.
  • 바인딩 Path 속성은 바인딩의 소스(데이터 텍스트)속성입니다. Path 지정되지 않은 경우 전체 데이터 텍스트 자체가 바인딩 소스입니다.

데이터 컨텍스트는 일반적으로 뷰 모델의 자식 객체입니다.목록 보기 내에서 데이터 컨텍스트는 뷰 모델이 소유한 목록 또는 관찰 가능한 컬렉션 내의 항목일 수 있습니다.


여러 바인딩을 지정하려면 다음과 같이 사용할 수 있습니다:

 {
      'TargetProperty1':{'Path':'SourceProperty1'},
      'TargetProperty2':{'Path':'SourceProperty2'}
 }

귀하의 특정 예에 대해 이것은 다음과 같을 수 있습니다:

local:MvxBind="
       {
          'Text':{'Path':'SubTotal','Converter':'Float'}, 
          'TextColor':{'Path':'HigherLower','Converter':'MyColorConverter'}
       }"

귀하의 뷰 모델이 다음과 같은 위치:

public class MyViewModel : IMvxViewModel
{
     public float SubTotal { get; set; }

     public bool HigherLower { get; set; }

     // more code here
}

그리고 당신의 변환기는 다음과 같습니다:

public class MyColorConverter : MvxBaseColorConverter
{
    protected override MvxColor Convert(object value, object parameter, CultureInfo culture)
    {
        return ((bool)value) ? new MvxColor(255,0,0) : new MvxColor(0,255,0);
    }
}

그리고 설정 중에 해당 변환기가 초기화되는 곳(예:어떻게 속성 참조 변환기 클래스는 트위터 검색


작업 중인 여러 바인딩을 보여주는 하나의 샘플은 베스트셀러입니다. https://github.com/slodge/MvvmCross/blob/master/Sample%20-%20BestSellers/BestSellers/BestSellers.Droid/Resources/Layout/ListItem_Category.axml

다른 팁

경로 ':'Highlloweryou는 다음을 수행해야합니다.

local:MvxBind="{'Text':{'Path':'SubTotal','Converter':'Float'}, 'TextColor':{'Path':'HigherLower','Converter':'Color'}}"
.

참고 사항 :

bind="{ 'Text':{xx}, 'Other':{yy} }"
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top