1- /*
1+ /*
22 * Copyright (c) 2026 Erik Darling, Darling Data LLC
33 *
44 * This file is part of the SQL Server Performance Monitor.
@@ -81,14 +81,16 @@ public MemoryContent()
8181 InitializeComponent ( ) ;
8282 SetupChartContextMenus ( ) ;
8383 Loaded += OnLoaded ;
84+ Helpers . ThemeManager . ThemeChanged += OnThemeChanged ;
85+ Unloaded += ( _ , _ ) => Helpers . ThemeManager . ThemeChanged -= OnThemeChanged ;
8486
8587 // Apply dark theme immediately so charts don't flash white before data loads
86- TabHelpers . ApplyDarkModeToChart ( MemoryStatsOverviewChart ) ;
87- TabHelpers . ApplyDarkModeToChart ( MemoryGrantSizingChart ) ;
88- TabHelpers . ApplyDarkModeToChart ( MemoryGrantActivityChart ) ;
89- TabHelpers . ApplyDarkModeToChart ( MemoryClerksChart ) ;
90- TabHelpers . ApplyDarkModeToChart ( PlanCacheChart ) ;
91- TabHelpers . ApplyDarkModeToChart ( MemoryPressureEventsChart ) ;
88+ TabHelpers . ApplyThemeToChart ( MemoryStatsOverviewChart ) ;
89+ TabHelpers . ApplyThemeToChart ( MemoryGrantSizingChart ) ;
90+ TabHelpers . ApplyThemeToChart ( MemoryGrantActivityChart ) ;
91+ TabHelpers . ApplyThemeToChart ( MemoryClerksChart ) ;
92+ TabHelpers . ApplyThemeToChart ( PlanCacheChart ) ;
93+ TabHelpers . ApplyThemeToChart ( MemoryPressureEventsChart ) ;
9294
9395 _memoryStatsOverviewHover = new Helpers . ChartHoverHelper ( MemoryStatsOverviewChart , "MB" ) ;
9496 _memoryGrantSizingHover = new Helpers . ChartHoverHelper ( MemoryGrantSizingChart , "MB" ) ;
@@ -103,6 +105,19 @@ private void OnLoaded(object sender, RoutedEventArgs e)
103105 // No grids to configure - all tabs are chart-only now
104106 }
105107
108+ private void OnThemeChanged ( string _ )
109+ {
110+ foreach ( var field in GetType ( ) . GetFields (
111+ System . Reflection . BindingFlags . NonPublic | System . Reflection . BindingFlags . Instance ) )
112+ {
113+ if ( field . GetValue ( this ) is ScottPlot . WPF . WpfPlot chart )
114+ {
115+ Helpers . TabHelpers . ApplyThemeToChart ( chart ) ;
116+ chart . Refresh ( ) ;
117+ }
118+ }
119+ }
120+
106121 private void SetupChartContextMenus ( )
107122 {
108123 // Memory Stats Overview chart
@@ -212,7 +227,7 @@ private void LoadMemoryStatsOverviewChart(List<MemoryStatsItem> memoryData, int
212227 }
213228 MemoryStatsOverviewChart . Plot . Clear ( ) ;
214229 _memoryStatsOverviewHover ? . Clear ( ) ;
215- TabHelpers . ApplyDarkModeToChart ( MemoryStatsOverviewChart ) ;
230+ TabHelpers . ApplyThemeToChart ( MemoryStatsOverviewChart ) ;
216231
217232 var dataList = memoryData ? . OrderBy ( d => d . CollectionTime ) . ToList ( ) ?? new List < MemoryStatsItem > ( ) ;
218233 // Total Memory series with gap filling
@@ -487,7 +502,7 @@ private void LoadMemoryGrantSizingChart(List<PoolGrantPoint> aggregated, int hou
487502 }
488503 MemoryGrantSizingChart . Plot . Clear ( ) ;
489504 _memoryGrantSizingHover ? . Clear ( ) ;
490- TabHelpers . ApplyDarkModeToChart ( MemoryGrantSizingChart ) ;
505+ TabHelpers . ApplyThemeToChart ( MemoryGrantSizingChart ) ;
491506
492507 var poolIds = aggregated . Select ( d => d . PoolId ) . Distinct ( ) . OrderBy ( id => id ) . ToList ( ) ;
493508 int colorIndex = 0 ;
@@ -556,7 +571,7 @@ private void LoadMemoryGrantActivityChart(List<PoolGrantPoint> aggregated, int h
556571 }
557572 MemoryGrantActivityChart . Plot . Clear ( ) ;
558573 _memoryGrantActivityHover ? . Clear ( ) ;
559- TabHelpers . ApplyDarkModeToChart ( MemoryGrantActivityChart ) ;
574+ TabHelpers . ApplyThemeToChart ( MemoryGrantActivityChart ) ;
560575
561576 var poolIds = aggregated . Select ( d => d . PoolId ) . Distinct ( ) . OrderBy ( id => id ) . ToList ( ) ;
562577 int colorIndex = 0 ;
@@ -727,7 +742,7 @@ private async System.Threading.Tasks.Task UpdateMemoryClerksChartFromPickerAsync
727742 }
728743 MemoryClerksChart . Plot . Clear ( ) ;
729744 _memoryClerksHover ? . Clear ( ) ;
730- TabHelpers . ApplyDarkModeToChart ( MemoryClerksChart ) ;
745+ TabHelpers . ApplyThemeToChart ( MemoryClerksChart ) ;
731746
732747 DateTime rangeEnd = _memoryClerksToDate ?? Helpers . ServerTimeHelper . ServerNow ;
733748 DateTime rangeStart = _memoryClerksFromDate ?? rangeEnd . AddHours ( - _memoryClerksHoursBack ) ;
@@ -864,7 +879,7 @@ private void LoadPlanCacheChart(IEnumerable<PlanCacheStatsItem> data, int hoursB
864879 }
865880 PlanCacheChart . Plot . Clear ( ) ;
866881 _planCacheHover ? . Clear ( ) ;
867- TabHelpers . ApplyDarkModeToChart ( PlanCacheChart ) ;
882+ TabHelpers . ApplyThemeToChart ( PlanCacheChart ) ;
868883
869884 var dataList = data ? . ToList ( ) ?? new List < PlanCacheStatsItem > ( ) ;
870885 if ( dataList . Count > 0 )
@@ -1005,7 +1020,7 @@ private void LoadMemoryPressureEventsChart(IEnumerable<MemoryPressureEventItem>
10051020 }
10061021 MemoryPressureEventsChart . Plot . Clear ( ) ;
10071022 _memoryPressureEventsHover ? . Clear ( ) ;
1008- TabHelpers . ApplyDarkModeToChart ( MemoryPressureEventsChart ) ;
1023+ TabHelpers . ApplyThemeToChart ( MemoryPressureEventsChart ) ;
10091024
10101025 // Only chart HIGH severity events
10111026 var dataList = data ? . Where ( d => d . Severity . Equals ( "HIGH" , StringComparison . OrdinalIgnoreCase ) )
0 commit comments