Я хочу, чтобы обновить коллекцию после того, как она была изменена, но я не могу показаться, чтобы получить «далеко» от этого исключения:Изменение коллекции от CollectionChanged события
Не удается изменить ObservableCollection во время события CollectionChanged или PropertyChanged.
Внутренний обработчик событий Я отменяю подписку на событие Collection измененное, прежде чем изменять что-либо, чтобы предотвратить бесконечные циклы, и после внесения изменений я снова подписываюсь на одно и то же событие.
private void CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
data.CollectionChanged -= CollectionChanged;
data.Add("Item");
data.CollectionChanged += CollectionChanged;
}
Я попытался с помощью Диспетчера вызвать data.Add («Item»), но не повезло :(
Лучшим решением здесь будет переделка, как вы делаете вещи - было бы необычно добавить элемент в коллекцию в середине обработчика события CollectionChanged, независимо от привязки/отцепления обработчика. В принципе, этот код пахнет несколькими различными способами. – slugster
Чтобы лучше понять, что я пытаюсь выполнить, это служебный пейджер. пейджер подключен к коллекции, а при изменении страницы - изменения коллекции. В этот момент я запрашиваю бэкэнд для данных с индексом страницы, а когда он возвращается - colletion очищается и заполняется новыми данными. Я использую этот RadQueryableCollectionView от Telerik, который позволяет вам сказать, что в коллекции и суммарном количестве предметов есть больше предметов без реальных предметов. Все работает нормально, если вызов службы выполнен (асинхронный), так как обработчик события завершен. Но при использовании mocks - данные возвращаются мгновенно, а u остаются внутри события ... – Kestutis