@@ -259,8 +259,6 @@ public RadialGauge()
259259 kaea . Handled = true ;
260260 }
261261 } ) ;
262-
263- Unloaded += RadialGauge_Unloaded ;
264262 }
265263
266264 private void ThemeListener_ThemeChanged ( ThemeListener sender )
@@ -270,6 +268,8 @@ private void ThemeListener_ThemeChanged(ThemeListener sender)
270268
271269 private void RadialGauge_Unloaded ( object sender , RoutedEventArgs e )
272270 {
271+ // TODO: We should just use a WeakEventListener for ThemeChanged here, but ours currently doesn't support it.
272+ // See proposal for general helper here: https://github.com/CommunityToolkit/dotnet/issues/404
273273 ThemeListener . ThemeChanged -= ThemeListener_ThemeChanged ;
274274 PointerReleased -= RadialGauge_PointerReleased ;
275275 Unloaded -= RadialGauge_Unloaded ;
@@ -480,6 +480,10 @@ protected override AutomationPeer OnCreateAutomationPeer()
480480 /// </summary>
481481 protected override void OnApplyTemplate ( )
482482 {
483+ PointerReleased -= RadialGauge_PointerReleased ;
484+ ThemeListener . ThemeChanged -= ThemeListener_ThemeChanged ;
485+ Unloaded -= RadialGauge_Unloaded ;
486+
483487 // Remember local brushes.
484488 _needleBrush = ReadLocalValue ( NeedleBrushProperty ) as SolidColorBrush ;
485489 _trailBrush = ReadLocalValue ( TrailBrushProperty ) as SolidColorBrush ;
@@ -490,6 +494,7 @@ protected override void OnApplyTemplate()
490494
491495 PointerReleased += RadialGauge_PointerReleased ;
492496 ThemeListener . ThemeChanged += ThemeListener_ThemeChanged ;
497+ Unloaded += RadialGauge_Unloaded ;
493498
494499 // Apply color scheme.
495500 OnColorsChanged ( ) ;
0 commit comments