XVMrin中的MVVM Light TextView双向绑定(Android)

时间:2016-08-30 20:29:17

标签: binding mvvm-light

是否有人使用MVVM Light在TextView上成功实现了双向绑定?双向对EditView完全正常,但是当我尝试与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 EditableText EditableText.Text="asdf";{ Set(ref _someField, value); })文本时(代码中)VewModel中相应的集合EditText触发器。当然,如果我只输入SimpleText (SimpleText.Text="2145";)小部件,它也会触发。

但是,当我更改(在代码中)JBOSS_HOME的text属性时,它不会触发相应的集合。

有谁知道为什么?

非常感谢您的帮助, 麦克

1 个答案:

答案 0 :(得分:0)

您无法使用TextView设置双向绑定,因为它们不允许用户输入。

当您使用MVVM模式时,您永远不应该更新视图。您应该更新绑定的模型属性。因此,您应该将SimpleText.Text = "2145";替换为vm.SomeField = "2145";