Esempio n. 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));
                    }
                }
            }
        }
Esempio n. 2
0
        private static void OnMenuItemClick(Object sender, RoutedEventArgs e)
        {
            SplitButton splitButton = sender as SplitButton;
            MenuItem    menuItem    = e.OriginalSource as MenuItem;

            // To make the ButtonClickEvent get fired as we expected, you should mark the ClickEvent
            // as handled to prevent the event from poping up to the button portion of the SplitButton.
            if (menuItem != null && !typeof(MenuItem).IsAssignableFrom(menuItem.Parent.GetType()))
            {
                e.Handled = true;
            }

            if (menuItem != null && splitButton != null)
            {
                if (splitButton.IsSubmenuOpen)
                {
                    splitButton.CloseSubmenu();
                }
            }
        }