diff --git a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cs b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cs index 8bb2ee79f..e9050f906 100644 --- a/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cs +++ b/src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.cs @@ -78,6 +78,8 @@ public GraphingCalculator() m_uiSettings = new UISettings(); m_uiSettings.ColorValuesChanged += OnColorValuesChanged; + this.Unloaded += OnUnloaded; + ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings; if (localSettings != null && localSettings.Values.ContainsKey(sc_IsGraphThemeMatchApp)) @@ -887,5 +889,26 @@ private void OnGraphingCalculatorLoaded(object sender, RoutedEventArgs e) // The control needs to be loaded, else the control will override GridLinesColor and ignore the value passed UpdateGraphTheme(); } + + private void OnUnloaded(object sender, RoutedEventArgs e) + { + this.Unloaded -= OnUnloaded; + + var dataTransferManager = DataTransferManager.GetForCurrentView(); + dataTransferManager.DataRequested -= OnDataRequested; + + GraphingControl.TracingChangedEvent -= OnShowTracePopupChanged; + GraphingControl.TracingValueChangedEvent -= OnTracePointChanged; + GraphingControl.PointerValueChangedEvent -= OnPointerPointChanged; + GraphingControl.Loaded -= OnGraphingCalculatorLoaded; + + m_accessibilitySettings.HighContrastChanged -= OnHighContrastChanged; + m_uiSettings.ColorValuesChanged -= OnColorValuesChanged; + + if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.UI.Xaml.Media.ThemeShadow")) + { + SharedShadow?.Receivers?.Remove(GraphingControl); + } + } } }