我有一个MvxListView绑定到ViewModel上的属性List<MyClass>
。
MyClass
是一个普通的旧对象,它有一个名为Completed
的布尔属性,我绑定到列表视图项模板中CheckedTextView
的Checked属性。
当我单击列表视图项时,它会调用一个调用DoSomething(MyClass item)
方法的命令。在DoSomething
方法中,我将Completed
属性设置为其新值。但是,由于MyClass
不是具有RaisePropertyChanged
属性的ViewModel,因此未在用户界面中更新checked属性。
如果Completed
属性发生变化,我将如何在此基本POCO上完成数据绑定以使用户界面更新?
答案 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来动态更新绑定。