From 9180d88a4432645135e9ff75ecb7c97213ecef7f Mon Sep 17 00:00:00 2001 From: Meik Date: Thu, 5 Mar 2026 10:39:35 +0100 Subject: [PATCH] Improve active tab indicator with modern accent rail --- MainWindow.xaml | 100 ++++++++++++++++++++++----------------------- MainWindow.xaml.cs | 27 +++++++----- 2 files changed, 67 insertions(+), 60 deletions(-) diff --git a/MainWindow.xaml b/MainWindow.xaml index 31daa6e..d913c0d 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -438,16 +438,16 @@ BorderBrush="{DynamicResource navigationRailBorderColor}" BorderThickness="1" CornerRadius="14" /> - - - + @@ -498,16 +498,16 @@ BorderBrush="{DynamicResource navigationRailBorderColor}" BorderThickness="1" CornerRadius="14" /> - - - + @@ -554,16 +554,16 @@ BorderBrush="{DynamicResource navigationRailBorderColor}" BorderThickness="1" CornerRadius="14" /> - - - + @@ -610,16 +610,16 @@ BorderBrush="{DynamicResource navigationRailBorderColor}" BorderThickness="1" CornerRadius="14" /> - - - + @@ -666,16 +666,16 @@ BorderBrush="{DynamicResource navigationRailBorderColor}" BorderThickness="1" CornerRadius="14" /> - - - + diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index d8f26ea..983130a 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -900,6 +900,13 @@ namespace C4IT_CustomerPanel } } + private FrameworkElement GetActiveTabIndicator(Button button) + { + return button == null + ? null + : visualHelper.FindVisualChild(button, "ActiveIndicator"); + } + public void SetMenuAktivInaktiv(object sender, bool force, bool Silent = false) { Button clickedButton = (Button)sender; @@ -912,17 +919,17 @@ namespace C4IT_CustomerPanel { clickedButton.Background = btnColor1; - System.Windows.Shapes.Polygon polyActiveButton = visualHelper.FindVisualChild(clickedButton); - if (polyActiveButton != null) - polyActiveButton.Visibility = Visibility.Visible; + FrameworkElement activeIndicator = GetActiveTabIndicator(clickedButton); + if (activeIndicator != null) + activeIndicator.Visibility = Visibility.Visible; } SolidColorBrush btnColor2 = this.ConfigSettings.GetInactiveButtonColor(); if (btnColor2 != null && ActiveButton != null) { ActiveButton.Background = btnColor2; - System.Windows.Shapes.Polygon polyInActiveButton = visualHelper.FindVisualChild(ActiveButton); - if (polyInActiveButton != null) - polyInActiveButton.Visibility = Visibility.Hidden; + FrameworkElement inactiveIndicator = GetActiveTabIndicator(ActiveButton); + if (inactiveIndicator != null) + inactiveIndicator.Visibility = Visibility.Hidden; } ActiveButton = clickedButton; } @@ -1720,13 +1727,13 @@ namespace C4IT_CustomerPanel Img.Visibility = Visibility.Visible; } - // check, if active button -> show advanced polygon + // check, if active button -> show active tab indicator if (bu != ActiveButton) return; - System.Windows.Shapes.Polygon polyActiveButton = visualHelper.FindVisualChild(bu); - if (polyActiveButton != null) - polyActiveButton.Visibility = Visibility.Visible; + FrameworkElement activeIndicator = GetActiveTabIndicator(bu); + if (activeIndicator != null) + activeIndicator.Visibility = Visibility.Visible; } catch (Exception E) {