Under Review
Last Updated: 02 Feb 2026 07:41 by ADMIN
Luis
Created on: 30 Jan 2026 09:28
Category: CollectionView
Type: Bug Report
1
Crash when removing item from grouped collectionview

We've got a CollectionView which shows a list of grouped items (grouping can be by date or other values - but date is the default).

The CollectionView items source is bound to an observable collection, and when the viewmodel saw an item removed from the observable collection, the Telerik control crashed.  We've seen instances of this app crash on Android (the same control hasn't been released to other platforms yet). We do not have reproduction steps as this is a rare issue, but it feels like it is worth communicating as you might be able to spot what is going on from your end.

System.ArgumentException: Arg_MustBeDateTime
  at int DateTime.CompareTo(object value)()
  at int Comparer.Compare(object a, object b)()
  at int SortFieldComparer.Compare(object o1, object o2)()
  at int ArraySortHelper<object>.InternalBinarySearch(object[], int, int, object, IComparer<object>)()
  at int ArraySortHelper<object>.BinarySearch(object[], int, int, object, IComparer<object>)()
System.InvalidOperationException: InvalidOperation_IComparerFailed
  at int ArraySortHelper<object>.BinarySearch(object[], int, int, object, IComparer<object>)()
  at int Array.BinarySearch<object>(object[] array, int index, int length, object value, IComparer<object> comparer)()
  at int List<object>.BinarySearch(int, int, object, IComparer<object>) x 2()
  at int Group.IndexOf(object item, IComparer<object> sortComparer)()
  at Tuple<Group, int> ParallelDataEngine.FindGroupAndItemIndex(IValueProvider valueProvider, Group rowRootGroup, object item, int index, bool exhaustiveSearch, bool canUseComparer)()
  at AddRemoveItemResult ParallelDataEngine.RemoveItem(IAggregateResultProvider aggregateResultProvider, IValueProvider valueProvider, Group rowRootGroup, Group columnRootGroup, object item, int index, bool exhaustiveSearch, bool canUseComparer)()
  at List<AddRemoveResult> ParallelDataEngine.Process(int index, IEnumerable items, bool remove, bool removeFilteredItem, bool canUseComparer)()
  at List<AddRemoveResult> ParallelDataEngine.Telerik.Maui.Data.IDataEngine.RemoveItems(int index, IEnumerable items, bool removeFilteredItem, bool canUseComparer)()
  at List<AddRemoveResult> LocalDataSourceProvider.RemoveItems(int oldStartingIndex, IList oldItems, NotifyCollectionChangedEventArgs e, bool doExhaustiveSearch, bool canUseComparer)()
  at void LocalDataSourceProvider.ProcessCollectionChanged(NotifyCollectionChangedEventArgs e)()
  at void LocalDataSourceProvider.DataView_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)()
  at void EnumerableDataSourceView.RaiseCollectionChanged(object sender, NotifyCollectionChangedEventArgs args)()
  at void EnumerableDataSourceView.ProcessCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)()
  at void EnumerableDataSourceView.ProcessCollectionChangedOverride(object sender, NotifyCollectionChangedEventArgs args)()
  at void EnumerableDataSourceView.ProcessPendingCollectionChange()()
  at void DataProviderBase.RaiseViewChanging(object sender, IList changedItems, CollectionChange action)()
  at void LocalDataSourceProvider.DataView_CollectionChanging(object sender, NotifyCollectionChangedEventArgs e)()
  at void EnumerableDataSourceView.RaiseCollectionChanging(object sender, NotifyCollectionChangedEventArgs args)()
  at void EnumerableDataSourceView.HandleCollectionChangedOverride(object sender, NotifyCollectionChangedEventArgs e)()
  at void EnumerableDataSourceView.Telerik.Maui.IWeakEventListener.ReceiveEvent(object sender, object args)()
  at void WeakEventHandlerList<NotifyCollectionChangedEventArgs>.ProcessEvent(object sender, object args)()
  at void WeakEventHandlerList<NotifyCollectionChangedEventArgs>.OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)()
  at void ObservableCollection<IWorkItemListItem>.OnCollectionChanged(NotifyCollectionChangedEventArgs) x 2()
  at void ObservableCollection<IWorkItemListItem>.RemoveItem(int)()
  at bool Collection<IWorkItemListItem>.Remove(IWorkItemListItem)()

any ideas on what might be going on here?

1 comment
ADMIN
Didi
Posted on: 02 Feb 2026 07:41

Hello Luis,

Thank you for the provided details.

I have tested the scenario and I cannot reproduce exceptions when removing items from a grouped collectionview control. I have attached the xaml and cs files. So you can add them to the project and test. 

Next Steps:

For sure I am missing something from the setup in which the exception occurs. Send a sample app in which the issue happens. The app should use latest Telerik MAUI version 12.1.0 and the project should target at least .NET 9. 

Regards,
Didi
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.

Attached Files: