From 508883aa4c534f803215b396d621d52b37ca10a5 Mon Sep 17 00:00:00 2001 From: John Boyer Date: Sun, 9 Oct 2022 22:03:05 +1100 Subject: [PATCH] Addresses #8970, Fixes DataGrid not processing all new items when collection has changed. --- .../Collections/DataGridCollectionView.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.Controls.DataGrid/Collections/DataGridCollectionView.cs b/src/Avalonia.Controls.DataGrid/Collections/DataGridCollectionView.cs index 906ec661ae..41d7883047 100644 --- a/src/Avalonia.Controls.DataGrid/Collections/DataGridCollectionView.cs +++ b/src/Avalonia.Controls.DataGrid/Collections/DataGridCollectionView.cs @@ -3412,8 +3412,7 @@ namespace Avalonia.Collections RefreshOrDefer(); return; } - - object addedItem = args.NewItems?[0]; + object removedItem = args.OldItems?[0]; // fire notifications for removes @@ -3424,11 +3423,17 @@ namespace Avalonia.Collections } // fire notifications for adds - if ((args.Action == NotifyCollectionChangedAction.Add || - args.Action == NotifyCollectionChangedAction.Replace) && - (Filter == null || PassesFilter(addedItem))) + if (args.NewItems != null && + (args.Action == NotifyCollectionChangedAction.Add || + args.Action == NotifyCollectionChangedAction.Replace)) { - ProcessAddEvent(addedItem, args.NewStartingIndex); + for (var i = 0; i < args.NewItems.Count; i++) + { + if (Filter == null || PassesFilter(args.NewItems[i])) + { + ProcessAddEvent(args.NewItems[i], args.NewStartingIndex + i); + } + } } if (args.Action != NotifyCollectionChangedAction.Replace) {