Exemple #1
0
        private static void OnMouseButtonDown(Object sender, MouseButtonEventArgs e)
        {
            SplitButton splitButton = sender as SplitButton;

            if (!splitButton.IsKeyboardFocusWithin)
            {
                splitButton.Focus();
                return;
            }

            if (Mouse.Captured == splitButton && e.OriginalSource == splitButton)
            {
                splitButton.CloseSubmenu();
                return;
            }

            if (e.Source is MenuItem)
            {
                MenuItem menuItem = e.Source as MenuItem;
                if (menuItem != null)
                {
                    if (!menuItem.HasItems)
                    {
                        splitButton.CloseSubmenu();
                        menuItem.RaiseEvent(new RoutedEventArgs(MenuItem.ClickEvent, menuItem));
                    }
                }
            }
        }
Exemple #2
0
        private static void OnIsSubmenuOpenChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
            SplitButton splitButton = sender as SplitButton;

            if ((Boolean)e.NewValue)
            {
                if (Mouse.Captured != splitButton)
                {
                    Mouse.Capture(splitButton, CaptureMode.SubTree);
                }
            }
            else
            {
                if (Mouse.Captured == splitButton)
                {
                    Mouse.Capture(null);
                }

                if (splitButton.IsKeyboardFocused)
                {
                    splitButton.Focus();
                }
            }
        }