From f103bf964d687ff6689c2048bfda491c6d49035e Mon Sep 17 00:00:00 2001 From: Andrew KeepCoding Date: Tue, 9 Sep 2025 17:56:43 +0900 Subject: [PATCH] =?UTF-8?q?Re-measure=20the=20Segmented=20control=20when?= =?UTF-8?q?=20any=20SegmentedItem=E2=80=99s=20Visibility=20toggles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Segmented/src/SegmentedItem/SegmentedItem.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/components/Segmented/src/SegmentedItem/SegmentedItem.cs b/components/Segmented/src/SegmentedItem/SegmentedItem.cs index 6fc91435..e91af560 100644 --- a/components/Segmented/src/SegmentedItem/SegmentedItem.cs +++ b/components/Segmented/src/SegmentedItem/SegmentedItem.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. + namespace CommunityToolkit.WinUI.Controls; /// @@ -20,6 +21,17 @@ public partial class SegmentedItem : ListViewItem public SegmentedItem() { this.DefaultStyleKey = typeof(SegmentedItem); + RegisterPropertyChangedCallback(VisibilityProperty, OnVisibilityChanged); + } + + private void OnVisibilityChanged(DependencyObject sender, DependencyProperty dp) + { + // If the parent is a Segmented control with an EqualPanel, + // we need to invalidate measure to update the layout. + if ((this.Parent as Segmented)?.ItemsPanelRoot is EqualPanel panel) + { + panel.InvalidateMeasure(); + } } ///