From 2725340994228428a3ad39175a15b5f3dadb8fe8 Mon Sep 17 00:00:00 2001 From: MBucari Date: Fri, 17 Mar 2023 17:51:39 -0600 Subject: [PATCH] Suppress VisibleCountChanged firing when updating grid --- .../ViewModels/ProductsDisplayViewModel.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Source/LibationAvalonia/ViewModels/ProductsDisplayViewModel.cs b/Source/LibationAvalonia/ViewModels/ProductsDisplayViewModel.cs index 1420bc98..452d0848 100644 --- a/Source/LibationAvalonia/ViewModels/ProductsDisplayViewModel.cs +++ b/Source/LibationAvalonia/ViewModels/ProductsDisplayViewModel.cs @@ -5,6 +5,7 @@ using Avalonia.Threading; using DataLayer; using LibationAvalonia.Dialogs.Login; using LibationUiBase.GridView; +using NPOI.SS.Formula.Functions; using ReactiveUI; using System; using System.Collections.Generic; @@ -116,17 +117,20 @@ namespace LibationAvalonia.ViewModels //Create the filtered-in list before adding entries to avoid a refresh FilteredInGridEntries = QueryResults(geList, FilterString); SOURCE.AddRange(geList.OrderByDescending(e => e.DateAdded)); - GridEntries.CollectionChanged += (_, _) - => VisibleCountChanged?.Invoke(this, GridEntries.OfType().Count()); - - VisibleCountChanged?.Invoke(this, GridEntries.OfType().Count()); + GridEntries.CollectionChanged += GridEntries_CollectionChanged; + GridEntries_CollectionChanged(); } + private void GridEntries_CollectionChanged(object sender = null, EventArgs e = null) + => VisibleCountChanged?.Invoke(this, GridEntries.OfType().Count()); + /// /// Call when there's been a change to the library /// internal async Task UpdateGridAsync(List dbBooks) { + GridEntries.CollectionChanged -= GridEntries_CollectionChanged; + #region Add new or update existing grid entries //Add absent entries to grid, or update existing entry @@ -176,6 +180,9 @@ namespace LibationAvalonia.ViewModels await Filter(FilterString); GC.Collect(GC.MaxGeneration, GCCollectionMode.Aggressive, true, true); + + GridEntries.CollectionChanged += GridEntries_CollectionChanged; + GridEntries_CollectionChanged(); } private void RemoveBooks(IEnumerable removedBooks, IEnumerable removedSeries)