From 06872b82d9f0d05a94dedc9d1180129be36dc3ae Mon Sep 17 00:00:00 2001 From: Mike Corsaro Date: Thu, 30 May 2024 14:34:26 -0700 Subject: [PATCH 1/4] Add test --- .../ListView/ListViewTests.Windows.cs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs b/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs index 44ad92d6f3e0..5c5edf6c6816 100644 --- a/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs +++ b/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Maui.Controls; +using Microsoft.Maui.Handlers; namespace Microsoft.Maui.DeviceTests { @@ -14,5 +16,37 @@ void ValidatePlatformCells(ListView listView) { } + + [Fact] + public async Task InsertItemWorks() + { + SetupBuilder(); + + var data = new ObservableCollection(); + var listView = new ListView() + { + ItemsSource = data + }; + + var layout = new VerticalStackLayout() + { + listView + }; + + await CreateHandlerAndAddToWindow(layout, async (handler) => + { + await Task.Delay(100); + + data.Add("Item 1"); + data.Add("Item 3"); + data.Insert(1, "Item 2"); + + await Task.Delay(100); + + var children = listView.GetVisualTreeDescendants(); + + Assert.True(children.Any()); + }); + } } } \ No newline at end of file From a058748cf9480426d8b65092cf7745a3c6c73fbe Mon Sep 17 00:00:00 2001 From: Mike Corsaro Date: Thu, 30 May 2024 15:39:29 -0700 Subject: [PATCH 2/4] Remove force layout update during collection changed event --- .../Handlers/ListView/Windows/ListViewRenderer.cs | 2 -- .../Elements/ListView/ListViewTests.Windows.cs | 12 +++++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Controls/src/Core/Compatibility/Handlers/ListView/Windows/ListViewRenderer.cs b/src/Controls/src/Core/Compatibility/Handlers/ListView/Windows/ListViewRenderer.cs index 942adb97ce67..1b5c24b9fd15 100644 --- a/src/Controls/src/Core/Compatibility/Handlers/ListView/Windows/ListViewRenderer.cs +++ b/src/Controls/src/Core/Compatibility/Handlers/ListView/Windows/ListViewRenderer.cs @@ -260,8 +260,6 @@ void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) ClearSizeEstimate(); ReloadData(); } - - Element.Dispatcher.DispatchIfRequired(() => List?.UpdateLayout()); } protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) diff --git a/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs b/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs index 5c5edf6c6816..253eac13131a 100644 --- a/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs +++ b/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs @@ -5,7 +5,12 @@ using System.Text; using System.Threading.Tasks; using Microsoft.Maui.Controls; +using Microsoft.Maui.Controls.Handlers.Compatibility; +using Microsoft.Maui.Controls.Platform; using Microsoft.Maui.Handlers; +using Microsoft.Maui.Platform; +using Microsoft.UI.Xaml; +using Xunit; namespace Microsoft.Maui.DeviceTests { @@ -41,11 +46,12 @@ await CreateHandlerAndAddToWindow(layout, async (handler) => data.Add("Item 3"); data.Insert(1, "Item 2"); - await Task.Delay(100); + await Task.Delay(1000); - var children = listView.GetVisualTreeDescendants(); + var actualListView = listView.ToPlatform() as ListViewRenderer; + var textChildren = actualListView.GetChildren(); - Assert.True(children.Any()); + Assert.True(textChildren.Any(x => x.Text == "Item 3")); }); } } From 824fa6e3678a50f3ee136345d2862879cf7f8c34 Mon Sep 17 00:00:00 2001 From: Mike Corsaro Date: Thu, 30 May 2024 15:52:41 -0700 Subject: [PATCH 3/4] Adjust await --- .../DeviceTests/Elements/ListView/ListViewTests.Windows.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs b/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs index 253eac13131a..495c76405cc1 100644 --- a/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs +++ b/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs @@ -46,7 +46,7 @@ await CreateHandlerAndAddToWindow(layout, async (handler) => data.Add("Item 3"); data.Insert(1, "Item 2"); - await Task.Delay(1000); + await Task.Delay(200); var actualListView = listView.ToPlatform() as ListViewRenderer; var textChildren = actualListView.GetChildren(); From bb7114b6962d3c4cbf8b6497567e17ba1b02434d Mon Sep 17 00:00:00 2001 From: Mike Corsaro Date: Fri, 14 Jun 2024 10:43:19 -0700 Subject: [PATCH 4/4] Update ListViewTests.Windows.cs --- .../DeviceTests/Elements/ListView/ListViewTests.Windows.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs b/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs index 495c76405cc1..79e673dd5da6 100644 --- a/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs +++ b/src/Controls/tests/DeviceTests/Elements/ListView/ListViewTests.Windows.cs @@ -51,8 +51,8 @@ await CreateHandlerAndAddToWindow(layout, async (handler) => var actualListView = listView.ToPlatform() as ListViewRenderer; var textChildren = actualListView.GetChildren(); - Assert.True(textChildren.Any(x => x.Text == "Item 3")); + Assert.Contains(textChildren, (x) => x.Text == "Item 3"); }); } } -} \ No newline at end of file +}