如果我将项目添加到ItemsSource以及项目中的某些数据更改,我需要刷新MvxListView。 ItemsSource反向排序,所以当我添加一个项目时我正在使用
private void OnItemAdded(object sender, ObjectEventArgs e)
{
ItemDataList.Insert(0, new ItemData((Item)e.Object));
}
当我使用ObservableCollection并且列表位于顶部并且我在顶部插入一个项目时,列表刷新,顶部显示新项目,所有其他项目向下移动。
如果我使用BindingList,那么在滚动之前列表不会刷新。 RaiseListChangedEvents设置为true,所以我希望它会刷新。
我不能使用ObservableCollection,因为我还需要在数据更改时刷新项目 - 这适用于从MvxNotifyPropertyChanged派生的BindingList和ItemData。
我这样做是否正确。 MvxListView应该使用BindingList吗?
谢谢, 乔纳森
答案 0 :(得分:0)
也许我会发疯...现在似乎工作我正在模拟器上重新测试它。
答案 1 :(得分:0)
INotifyCollectionChanged
是MvxAdapter
与收藏品绑定的方式 - 请参阅https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Binding.Droid/Views/MvxAdapter.cs#L136
同样在iOS中MvxTableViewSource
- https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Binding.Mac/Views/MvxTableViewSource.cs#L56
因此,IBindingList
(http://msdn.microsoft.com/en-us/library/system.componentmodel.ibindinglist(v=vs.110).aspx)默认支持 。但是,如果他们愿意,个别开发人员可以轻松添加此功能 - 只需将上面的MvxAdapter
扩展为订阅任何传入ListChanged
来源的IBindingList
个事件。