Binding Xamarin(Android)中的MVVM Light TextView双向绑定
是否有人使用MVVM Light在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
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));
}