From 4c2894bf3a1455e196e42181ef54c59362c09a50 Mon Sep 17 00:00:00 2001 From: timunie Date: Fri, 24 Apr 2026 16:50:17 +0200 Subject: [PATCH] fix for failing tests on CarouselPage and TabbedPage --- src/Avalonia.Controls/Page/CarouselPage.cs | 9 ++++++--- src/Avalonia.Controls/Page/TabbedPage.cs | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.Controls/Page/CarouselPage.cs b/src/Avalonia.Controls/Page/CarouselPage.cs index 22bee65871..fb5feec1d0 100644 --- a/src/Avalonia.Controls/Page/CarouselPage.cs +++ b/src/Avalonia.Controls/Page/CarouselPage.cs @@ -116,6 +116,8 @@ namespace Avalonia.Controls { base.OnApplyTemplate(e); + var requestedIndex = SelectedIndex; + if (_carousel != null) { _carousel.SelectionChanged -= OnCarouselSelectionChanged; @@ -126,7 +128,6 @@ namespace Avalonia.Controls if (_carousel != null) { - _carousel.SelectionChanged += OnCarouselSelectionChanged; _carousel.ContainerPrepared += OnCarouselContainerPrepared; _carousel.PageTransition = PageTransition; _carousel.ItemsPanel = ItemsPanel; @@ -134,11 +135,13 @@ namespace Avalonia.Controls _carousel.IsSwipeEnabled = IsGestureEnabled; _carousel.ItemsSource = (IEnumerable?)ItemsSource ?? Pages; - if (SelectedIndex >= 0) + if (requestedIndex >= 0) { - _carousel.SelectedIndex = SelectedIndex; + _carousel.SelectedIndex = requestedIndex; } + _carousel.SelectionChanged += OnCarouselSelectionChanged; + UpdateActivePage(); } } diff --git a/src/Avalonia.Controls/Page/TabbedPage.cs b/src/Avalonia.Controls/Page/TabbedPage.cs index 89e926dc3c..9467bd46be 100644 --- a/src/Avalonia.Controls/Page/TabbedPage.cs +++ b/src/Avalonia.Controls/Page/TabbedPage.cs @@ -179,6 +179,8 @@ namespace Avalonia.Controls { base.OnApplyTemplate(e); + var requestedIndex = SelectedIndex; + if (_tabControl != null) { _tabControl.SelectionChanged -= TabControl_SelectionChanged; @@ -192,13 +194,14 @@ namespace Avalonia.Controls if (_tabControl != null) { - _tabControl.SelectionChanged += TabControl_SelectionChanged; _tabControl.ContainerPrepared += OnContainerPrepared; _tabControl.ContainerClearing += OnContainerClearing; _tabControl.ItemsSource = (IEnumerable?)ItemsSource ?? Pages; - if (SelectedIndex >= 0) - _tabControl.SelectedIndex = SelectedIndex; + if (requestedIndex >= 0) + _tabControl.SelectedIndex = requestedIndex; + + _tabControl.SelectionChanged += TabControl_SelectionChanged; if (PageTransition != null) _tabControl.PageTransition = PageTransition;