From b40f0142feb22381932328eda693c5079db8a7ba Mon Sep 17 00:00:00 2001 From: Winston de Jong Date: Fri, 4 Jun 2021 15:02:49 -0700 Subject: [PATCH 1/2] Fix issue where setting StaggeredLayout.ColumnWidth to NaN would cause an exception --- .../StaggeredLayout/StaggeredLayout.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Microsoft.Toolkit.Uwp.UI.Controls.Primitives/StaggeredLayout/StaggeredLayout.cs b/Microsoft.Toolkit.Uwp.UI.Controls.Primitives/StaggeredLayout/StaggeredLayout.cs index fb94cf42878..88817533fb8 100644 --- a/Microsoft.Toolkit.Uwp.UI.Controls.Primitives/StaggeredLayout/StaggeredLayout.cs +++ b/Microsoft.Toolkit.Uwp.UI.Controls.Primitives/StaggeredLayout/StaggeredLayout.cs @@ -147,14 +147,14 @@ protected override Size MeasureOverride(VirtualizingLayoutContext context, Size double availableWidth = availableSize.Width; double availableHeight = availableSize.Height; - double columnWidth = Math.Min(DesiredColumnWidth, availableWidth); + double columnWidth = double.IsNaN(DesiredColumnWidth) ? availableWidth : Math.Min(DesiredColumnWidth, availableWidth); if (columnWidth != state.ColumnWidth) { // The items will need to be remeasured state.Clear(); } - state.ColumnWidth = Math.Min(DesiredColumnWidth, availableWidth); + state.ColumnWidth = double.IsNaN(DesiredColumnWidth) ? availableWidth : Math.Min(DesiredColumnWidth, availableWidth); int numColumns = Math.Max(1, (int)Math.Floor(availableWidth / state.ColumnWidth)); // adjust for column spacing on all columns expect the first From 8570e3cf1a829face93d58b047e983a9f1081b53 Mon Sep 17 00:00:00 2001 From: Winston de Jong Date: Fri, 4 Jun 2021 15:08:53 -0700 Subject: [PATCH 2/2] added comments --- .../StaggeredLayout/StaggeredLayout.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Microsoft.Toolkit.Uwp.UI.Controls.Primitives/StaggeredLayout/StaggeredLayout.cs b/Microsoft.Toolkit.Uwp.UI.Controls.Primitives/StaggeredLayout/StaggeredLayout.cs index 88817533fb8..470aad9ac96 100644 --- a/Microsoft.Toolkit.Uwp.UI.Controls.Primitives/StaggeredLayout/StaggeredLayout.cs +++ b/Microsoft.Toolkit.Uwp.UI.Controls.Primitives/StaggeredLayout/StaggeredLayout.cs @@ -147,6 +147,7 @@ protected override Size MeasureOverride(VirtualizingLayoutContext context, Size double availableWidth = availableSize.Width; double availableHeight = availableSize.Height; + // This ternary prevents the column width from being NaN, which would otherwise cause an exception when measuring item sizes double columnWidth = double.IsNaN(DesiredColumnWidth) ? availableWidth : Math.Min(DesiredColumnWidth, availableWidth); if (columnWidth != state.ColumnWidth) { @@ -154,6 +155,7 @@ protected override Size MeasureOverride(VirtualizingLayoutContext context, Size state.Clear(); } + // This ternary prevents the column width from being NaN, which would otherwise cause an exception when measuring item sizes state.ColumnWidth = double.IsNaN(DesiredColumnWidth) ? availableWidth : Math.Min(DesiredColumnWidth, availableWidth); int numColumns = Math.Max(1, (int)Math.Floor(availableWidth / state.ColumnWidth));