MvvmCross DataBinding修改Android ListView中的单个项目

时间:2014-08-27 21:16:26

标签: mvvm data-binding android-listview xamarin mvvmcross

我正在尝试动态修改ViewModel的List(ObservableCollection)中的项目,并通过MvvmCross绑定在View中更新这些更改。我最终的目标是当用户点击列表项时,我会弹出一个对话框,要求他们编辑该项。当对话框被暗淡时,视图模型将被更新(通过我假设的ICommand),并且修改后的值现在将在列表中。

我还没有查看对话框,所以现在我只是尝试在每次单击列表项时切换一个布尔值,并在MvxListView中更改该值。我的View中的MxvListView绑定到我的ViewModel中的ObservableCollection,并且在选择一个项目时会调用一个MvxCommand。所有这一切都有效,我可以看到调试器中的值发生了变化,但是新值没有显示在MvxListView中。所以我的问题是:如何在ObservableCollection中的各个项中修改数据以绑定到MvxListView?

我在网上看到的所有示例都使用ObservableCollection进行动态绑定,但它们只会添加或删除项目。我还没有找到任何修改项目的例子。如果我将MvxCommand中的代码从修改数据更改为添加或删除项目,则列表将更新。所以这告诉我,我认为我已经接近了。

我没有在这里复制粘贴代码,而是在github上创建了一个示例项目来查看: https://github.com/smulrich/breaktimer

我很感激帮助。

1 个答案:

答案 0 :(得分:2)

您可以简单地替换
Breaks[index] = b;

Breaks[index] = new DailyBreak() { Reason = b.Reason, TimeOfDay = b.TimeOfDay, Enabled = b.Enabled };

或更合理,您应该认识INotifyPropertyChanged课程DailyBreak List,ObservationCollection和INotifyPropertyChanged之间有所不同,请参考enter link description here