Я новичок с формами Xamarin DataBinding и ObservableCollections.
У меня вопрос об уведомлении, когда я заменяю элемент в ObservableCollection. Позвольте мне рассказать вам о моей цели. Во-первых, немного проблемного контекста:
- ObservableCollection находится на viemModel, например ObservableCollection <"Customer">.
- Коллекция привязана к Xamarin CollectionView, показывая некоторую информацию о клиенте и кнопку для обновления статуса клиента.
- В ответ на событие нажатия кнопки я использую службы отдыха и создаю сообщение для обновления. клиент, по которому щелкнули.
- Метод Post возвращает новый элемент: измененный клиент
На данный момент я задаюсь вопросом, как лучше всего обновить коллекцию, чтобы мой пользовательский интерфейс обновился.
Я знаю, что могу обновить свойства Item, но чтобы это работало, я должен внедрить INotifyPropertyChange для моего клиента (объект POCO). Это не проблема, но иногда существует много свойств, обновленных службой Rest, и я бы предпочел заменить отредактированного клиента в ObservableCollection новым, возвращенным методом Post, а не обновлять свойства одно за другим.
Итак, я заменяю объект коллекции на этот код и работает нормально:
var index = viewModel.Items.IndexOf(originalCustomer);
viewModel.Items[index] = updatedCustomer;
Но этот способ включает получение индекса заменяемого элемента с помощью Collection.IndexOf (customer), и это, похоже,быть O (n) операция. ¿Есть ли способ получить индекс кликаемого клиента непосредственно по событию клика со сложностью O (1)?
Заранее спасибо.