private static void Window_Activated(object sender, EventArgs e) { Window window = (Window)sender; int index = TabTearOffBehavior._windows.IndexOf(window); if (index == 0) { return; } TabTearOffBehavior._windows.RemoveAt(index); TabTearOffBehavior._windows.Insert(0, window); TabTearOffBehavior.AssignZIndices(); }
private static void MaintainZIndexProperty_PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { Window window = d as Window; if (window == null) { return; } if ((bool)e.NewValue) { window.Activated += TabTearOffBehavior.Window_Activated; window.Closed += TabTearOffBehavior.Window_Closed; TabTearOffBehavior._windows.Add(window); } else if (TabTearOffBehavior._windows.Remove(window)) { window.ClearValue(TabTearOffBehavior._zIndexProperty); window.Activated -= TabTearOffBehavior.Window_Activated; window.Closed -= TabTearOffBehavior.Window_Closed; } TabTearOffBehavior.AssignZIndices(); }