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

Binding Xamarin(Android)中的MVVM Light TextView双向绑定,binding,mvvm-light,Binding,Mvvm Light,是否有人使用MVVM Light在TextView上成功实现了双向绑定?双向绑定在EditView上运行得非常好,但是当我尝试使用TextView进行双向绑定时,只有单向绑定可以工作。有人知道为什么吗 视图模型: private string _someField; public string SomeField { get { return _someField; } set { Set(ref _someField, value); } } 视图: private Edit

是否有人使用MVVM Light在
TextView
上成功实现了双向绑定?双向绑定在
EditView
上运行得非常好,但是当我尝试使用
TextView
进行双向绑定时,只有单向绑定可以工作。有人知道为什么吗

视图模型:

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

private EditText\u editableText;
公共可编辑文本;
{
获取{return _editableTex???(_editableTex=findviewbyd(Resource.Id.editText1));}
}
私有文本视图_simpleText
公共文本视图SimpleText
{
获取{return _simpleText???(_simpleText=findviewbyd(Resource.Id.textDateDisplay));}
}
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
Add(this.SetBinding(()=>vm.SomeField,()=>EditableText.Text,BindingMode.TwoWay));
Add(this.SetBinding(()=>vm.SomeField,()=>SimpleText.Text,BindingMode.TwoWay));
}
不会抛出任何错误。但是当我(在代码中)更改
视图
可编辑文本
EditableText.text=“asdf”
)的文本时,相应的集合{set(ref _someField,value);}会在
VewModel
中触发。如果我只是键入
EditText
小部件,它也会自然触发

但是,当我(在代码中)更改
SimpleText(SimpleText.text=“2145”;
的text属性时,它不会触发相应的集合

有人知道为什么吗

非常感谢你的帮助,
mike

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


当您使用MVVM模式时,您不应该更新视图。您应该更新绑定模型属性。因此,您应该替换
SimpleText.Text=“2145”带有
vm.SomeField=“2145”

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

当您使用MVVM模式时,您不应该更新视图。您应该更新绑定模型属性。因此,您应该替换
SimpleText.Text=“2145”带有
vm.SomeField=“2145”

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