数据绑定到MvvMCross中的非ViewModel属性

时间:2014-01-03 19:30:38

标签: c# android data-binding mvvm mvvmcross

我有一个MvxListView绑定到ViewModel上的属性List<MyClass>

MyClass是一个普通的旧对象,它有一个名为Completed的布尔属性,我绑定到列表视图项模板中CheckedTextView的Checked属性。

当我单击列表视图项时,它会调用一个调用DoSomething(MyClass item)方法的命令。在DoSomething方法中,我将Completed属性设置为其新值。但是,由于MyClass不是具有RaisePropertyChanged属性的ViewModel,因此未在用户界面中更新checked属性。

如果Completed属性发生变化,我将如何在此基本POCO上完成数据绑定以使用户界面更新?

1 个答案:

答案 0 :(得分:1)

  

如何在此基本POCO上完成数据绑定,以便在Completed属性更改时让用户界面更新?

Xaml / C#样式Data-Binding依赖于INotifyPropertyChanged - 如果没有这个,UI就无法知道它需要更新。

因此,要使数据绑定工作,您的MyClass对象不能只是一个POCO - 它需要以某种方式实现INotifyPropertyChanged - 例如继承自MvxNotifyPropertyChanged或直接实施INotifyPropertyChanged(例如见http://msdn.microsoft.com/en-us/library/vstudio/ms229614%28v=vs.100%29.aspx


除此之外:MvvmCross还可以使INotifyPropertyChanged之外的其他绑定模式成为可能 - 例如请参阅https://github.com/MvvmCross/MvvmCross/wiki/Databinding#rio FieldBinding 中的INotifyChanged - 但这仍然需要不仅仅是POCO来动态更新绑定。