【发布时间】:2019-10-05 09:03:00
【问题描述】:
我是 Xamarin 表单 DataBinding 和 ObservableCollections 的新手。
我的问题是当我替换 ObservableCollection 中的项目时收到通知。让我告诉你我的目标。首先,有一点问题背景:
- ObservableCollection 在 viemModel 上,例如 ObservableCollection。
- 该集合绑定到 Xamarin CollectionView,显示一些客户信息和一个用于更新客户状态的按钮。
- 为了响应按钮点击事件,我使用 Rest 服务并发布帖子以更新点击的客户。
- Post 方法返回一个新项目:修改后的客户
此时,我想知道更新集合的最佳方法是刷新我的用户界面。
我知道我可以更新 Item 的属性,但要让这种方式工作,我必须在我的客户(POCO 对象)上实现 INotifyPropertyChange。这不是问题,但有时 Rest 服务更新了很多属性,我宁愿将 ObservableCollection 中已编辑的客户替换为 Post 方法返回的新客户,而不是一一更新属性。
所以,我用这段代码替换了集合上的对象,并且工作正常:
var index = viewModel.Items.IndexOf(originalCustomer);
viewModel.Items[index] = updatedCustomer;
但是这种方式涉及使用 Collection.IndexOf(customer) 获取要替换的项目的索引,这似乎是一个 O(n) 操作。 ¿有什么方法可以直接在 O(1) 复杂度的点击事件上获取点击客户的索引?
提前致谢。
【问题讨论】:
标签: c# xamarin data-binding collections time-complexity