private static void TabControl_Loaded(object sender, RoutedEventArgs e) { TabControl tabControl = (TabControl)sender; tabControl.Loaded -= TabTearOffBehavior.TabControl_Loaded; TabTearOffBehavior.SetWindowMaintainZIndex(tabControl, true); }
private static void HandlerProperty_PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { TabControl tabControl = d as TabControl; if (tabControl == null) { return; } if (e.NewValue == null && e.OldValue != null) { WeakEventManager <TabControl, MouseButtonEventArgs> .RemoveHandler(tabControl, nameof(TabControl.PreviewMouseLeftButtonDown), TabTearOffBehavior.TabControl_PreviewMouseLeftButtonDown); if (!tabControl.IsLoaded) { tabControl.Loaded -= TabTearOffBehavior.TabControl_Loaded; } else { TabTearOffBehavior.SetWindowMaintainZIndex(tabControl, false); } } else if (e.NewValue != null && e.OldValue == null) { WeakEventManager <TabControl, MouseButtonEventArgs> .AddHandler(tabControl, nameof(TabControl.PreviewMouseLeftButtonDown), TabTearOffBehavior.TabControl_PreviewMouseLeftButtonDown); if (!tabControl.IsLoaded) { tabControl.Loaded += TabTearOffBehavior.TabControl_Loaded; } else { TabTearOffBehavior.SetWindowMaintainZIndex(tabControl, true); } } }