private static void OnLostMouseCapture(object sender, MouseEventArgs e) { GroupNavigationControl groupNavigationControl = ( GroupNavigationControl )sender; DependencyObject originalSource = e.OriginalSource as DependencyObject; if (Mouse.Captured != groupNavigationControl) { if (e.OriginalSource == groupNavigationControl) { if ((Mouse.Captured == null) && (Nequeo.Wpf.Wpf.TreeHelper.IsDescendantOf(originalSource, groupNavigationControl))) { groupNavigationControl.Close(); } } else if ((originalSource != null) && (Nequeo.Wpf.Wpf.TreeHelper.IsDescendantOf(originalSource, groupNavigationControl))) { if ((groupNavigationControl.IsDropDownOpen) && (Mouse.Captured == null)) { Mouse.Capture(groupNavigationControl, CaptureMode.SubTree); e.Handled = true; } } else { groupNavigationControl.Close(); } } }
private static void OnPreviewMouseButtonDown(object sender, MouseButtonEventArgs e) { GroupNavigationControl groupNavigationControl = ( GroupNavigationControl )sender; Visual originalSource = e.OriginalSource as Visual; if ((originalSource != null) && (groupNavigationControl.PartButton != null) && (groupNavigationControl.PartButton.IsAncestorOf(originalSource))) { if (groupNavigationControl.IsDropDownOpen) { groupNavigationControl.Close(); } } }
private static void OnMouseButtonDown(object sender, MouseButtonEventArgs e) { GroupNavigationControl groupNavigationControl = ( GroupNavigationControl )sender; if (!groupNavigationControl.IsKeyboardFocusWithin) { groupNavigationControl.Focus(); } e.Handled = true; if ((Mouse.Captured == groupNavigationControl) && (e.OriginalSource == groupNavigationControl)) { groupNavigationControl.Close(); } }