質問

MVVMCROSSを使用して、My ViewModelをAndroid Viewレイアウトにデータインにしています。

SimpleBindingの例から、値をバインドするようにすることができます。

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

だからテキストはViewModelの小計プロパティにバインドされています。しかし、どのように私は複数の財産にバインドするのですか?私の場合では、LiverLowerと呼ばれるViewModelプロパティをレイアウト要素のtextColor属性にバインドしたいです。もう1つのMVXBindを追加できず、MVxBindを配列に設定することはできません。

役に立ちましたか?

解決

バインディング式で使用されているJSONのフォーマットは、名前付き mvxjsonbindingdescription

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; }
}
.

これは:

アクティビティ/ビューレベルのAXML DataContextはViewModelです。ただし、サブビューAXMLの場合、DataContextは通常ViewModelの子オブジェクトになります。 ListViewの中にDataContextは、ViewModelによって所有されているリスト内の項目またはObservableCollectionの中にある場合があります。


JSONのような複数のバインディングを指定するには:

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

あなたの特定の例ではこれが次のようになるかもしれません:

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

あなたのViewModelがそのようなものです:

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);
    }
}
. セットアップ中にその変換器が初期化されています。
コンバータクラスは Twittersearch


作業時の複数のバインディングを示す1つのサンプルはベストセラーです - リスト項目の「クリックとテキスト」を参照してください。 https://github.com/slodge/mvvmcross/blob/master/sample%20-%20bestsellers/bestsellers/bestsellers.droid/リソース/レイアウト/ ListItem_Category.axml

他のヒント

パス ':'ハイローワーはこれを行わなければなりません:

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

注:

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top