是否有人使用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属性时,它不会触发相应的集合。
有谁知道为什么?
非常感谢您的帮助, 麦克
答案 0 :(得分:0)
您无法使用TextView
设置双向绑定,因为它们不允许用户输入。
当您使用MVVM模式时,您永远不应该更新视图。您应该更新绑定的模型属性。因此,您应该将SimpleText.Text = "2145";
替换为vm.SomeField = "2145";
。