2016-08-30 6 views
1

MVVM Lightを使用してTextViewで双方向バインディングを正常に実装した人はいますか?双方向はEditViewで完璧に動作しますが、TextViewとの双方向バインドを試みると、一方向バインディングのみが動作します。なぜ誰にでも洞察力を持っている人はいますか?MVVMライトXamarin(Android)でのTextView双方向バインディング

ビューモデル:

private string _someField; 
public string SomeField 
{ 
    get { return _someField; } 
    set { Set(ref _someField, value); } 
} 

ビュー:エラーがスローされません

private EditText _editableText; 
public EditText EditableText; 
{ 
    get { return _editableTex ?? (_editableTex = FindViewById<EditText>(Resource.Id.editText1)); } 
} 

private TextView _simpleText 
public TextView SimpleText 
{ 
    get { return _simpleText ?? (_simpleText = FindViewById<TextView>(Resource.Id.textDateDisplay)); } 
} 

protected override void OnCreate(Bundle savedInstanceState) 
{ 
    bindings.Add(this.SetBinding(() => vm.SomeField,() => EditableText.Text, BindingMode.TwoWay)); 
    bindings.Add(this.SetBinding(() => vm.SomeField,() => SimpleText.Text, BindingMode.TwoWay)); 
} 

。しかし、Viewの(コード内の)EditableTextEditableText.Text="asdf";)のテキストを変更すると、対応するセット{ Set(ref _someField, value); }VewModelでトリガーされます。また、EditTextウィジェットを入力するだけで、自然にトリガされます。

しかし、(コードで)SimpleText (SimpleText.Text="2145";)のテキストプロパティを変更すると、対応するセットがトリガーされません。

誰でも知っていますか?

は、彼らは、ユーザの入力を許可していないので、あなたは、TextView Sと結合する2ウェイを設定することはできません マイク

答えて

0

、助けいただき、誠にありがとうございます。

MVVMパターンを使用しているときは、決してビューを更新しないでください。バウンドモデルプロパティを更新する必要があります。したがって、SimpleText.Text = "2145";vm.SomeField = "2145";に置き換える必要があります。

関連する問題