diff --git a/src/modules/cmdpal/Microsoft.CmdPal.UI/Dock/DockControl.xaml.cs b/src/modules/cmdpal/Microsoft.CmdPal.UI/Dock/DockControl.xaml.cs index 3b4249a8f6..dd0f6c75b5 100644 --- a/src/modules/cmdpal/Microsoft.CmdPal.UI/Dock/DockControl.xaml.cs +++ b/src/modules/cmdpal/Microsoft.CmdPal.UI/Dock/DockControl.xaml.cs @@ -67,15 +67,52 @@ public sealed partial class DockControl : UserControl, IRecipient(this); - WeakReferenceMessenger.Default.Register(this); - - ViewModel.CenterItems.CollectionChanged += CenterItems_CollectionChanged; + Loaded += DockControl_Loaded; + Unloaded += DockControl_Unloaded; // Start with edit mode disabled - normal click behavior UpdateEditMode(false); } + private void DockControl_Loaded(object sender, RoutedEventArgs e) + { + WeakReferenceMessenger.Default.UnregisterAll(this); + WeakReferenceMessenger.Default.Register(this); + WeakReferenceMessenger.Default.Register(this); + + ViewModel.CenterItems.CollectionChanged -= CenterItems_CollectionChanged; + ViewModel.CenterItems.CollectionChanged += CenterItems_CollectionChanged; + + UpdateEditModeTeachingTip(); + } + + private void DockControl_Unloaded(object sender, RoutedEventArgs e) + { + WeakReferenceMessenger.Default.UnregisterAll(this); + + ViewModel.CenterItems.CollectionChanged -= CenterItems_CollectionChanged; + + if (EditButtonsTeachingTip.IsOpen) + { + EditButtonsTeachingTip.IsOpen = false; + } + + if (ContextMenuFlyout.IsOpen) + { + ContextMenuFlyout.Hide(); + } + + if (AddBandFlyout.IsOpen) + { + AddBandFlyout.Hide(); + } + + if (EditModeContextMenu.IsOpen) + { + EditModeContextMenu.Hide(); + } + } + private void CenterItems_CollectionChanged(object? sender, NotifyCollectionChangedEventArgs e) { UpdateCenterVisibility(); @@ -125,7 +162,38 @@ public sealed partial class DockControl : UserControl, IRecipient