diff --git a/src/MahApps.Metro/Controls/HamburgerMenu/HamburgerMenu.Events.cs b/src/MahApps.Metro/Controls/HamburgerMenu/HamburgerMenu.Events.cs index 259925b988..1abf95188e 100644 --- a/src/MahApps.Metro/Controls/HamburgerMenu/HamburgerMenu.Events.cs +++ b/src/MahApps.Metro/Controls/HamburgerMenu/HamburgerMenu.Events.cs @@ -1,7 +1,6 @@ using System; using System.Windows; using System.Windows.Controls; -using System.Windows.Input; namespace MahApps.Metro.Controls { @@ -42,8 +41,20 @@ private void OnItemClick() (selectedItem as HamburgerMenuItem)?.RaiseCommand(); RaiseItemCommand(); + RaiseItemEvents(selectedItem); + } + + private bool RaiseItemEvents(object selectedItem) + { + if (selectedItem is null || (ItemClick is null && ItemInvoked is null)) + { + return false; + } + ItemClick?.Invoke(this, new ItemClickEventArgs(selectedItem)); ItemInvoked?.Invoke(this, new HamburgerMenuItemInvokedEventArgs() { InvokedItem = selectedItem, IsItemOptions = false }); + + return true; } private void OnOptionsItemClick() @@ -58,52 +69,27 @@ private void OnOptionsItemClick() (selectedItem as HamburgerMenuItem)?.RaiseCommand(); RaiseOptionsItemCommand(); - OptionsItemClick?.Invoke(this, new ItemClickEventArgs(selectedItem)); - ItemInvoked?.Invoke(this, new HamburgerMenuItemInvokedEventArgs() { InvokedItem = selectedItem, IsItemOptions = true }); + RaiseOptionsItemEvents(selectedItem); } - private ListBoxItem GetClickedListBoxItem(ItemsControl itemsControl, DependencyObject dependencyObject) + private bool RaiseOptionsItemEvents(object selectedItem) { - if (itemsControl == null || dependencyObject == null) + if (selectedItem is null || (OptionsItemClick is null && ItemInvoked is null)) { - return null; + return false; } - var item = ItemsControl.ContainerFromElement(itemsControl, dependencyObject) as ListBoxItem; - return item; - } - private void ButtonsListView_ItemClick(object sender, MouseButtonEventArgs e) - { - var item = GetClickedListBoxItem(sender as ItemsControl, e.OriginalSource as DependencyObject); - if (item != null) - { - // ListBox item clicked - do some cool things here - OnItemClick(); - } - } + OptionsItemClick?.Invoke(this, new ItemClickEventArgs(selectedItem)); + ItemInvoked?.Invoke(this, new HamburgerMenuItemInvokedEventArgs() { InvokedItem = selectedItem, IsItemOptions = true }); - private void OptionsListView_ItemClick(object sender, MouseButtonEventArgs e) - { - var item = GetClickedListBoxItem(sender as ItemsControl, e.OriginalSource as DependencyObject); - if (item != null) - { - // ListBox item clicked - do some cool things here - OnOptionsItemClick(); - } + return true; } private void ButtonsListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems != null && e.AddedItems.Count > 0) { - if (Keyboard.IsKeyToggled(Key.Space) || - Keyboard.IsKeyToggled(Key.Up) || - Keyboard.IsKeyToggled(Key.PageUp) || - Keyboard.IsKeyToggled(Key.Down) || - Keyboard.IsKeyToggled(Key.PageDown)) - { - OnItemClick(); - } + OnItemClick(); } } @@ -111,14 +97,7 @@ private void OptionsListView_SelectionChanged(object sender, SelectionChangedEve { if (e.AddedItems != null && e.AddedItems.Count > 0) { - if (Keyboard.IsKeyToggled(Key.Space) || - Keyboard.IsKeyToggled(Key.Up) || - Keyboard.IsKeyToggled(Key.PageUp) || - Keyboard.IsKeyToggled(Key.Down) || - Keyboard.IsKeyToggled(Key.PageDown)) - { - OnOptionsItemClick(); - } + OnOptionsItemClick(); } } } diff --git a/src/MahApps.Metro/Controls/HamburgerMenu/HamburgerMenu.cs b/src/MahApps.Metro/Controls/HamburgerMenu/HamburgerMenu.cs index 91d52814b7..2d5d07e4ce 100644 --- a/src/MahApps.Metro/Controls/HamburgerMenu/HamburgerMenu.cs +++ b/src/MahApps.Metro/Controls/HamburgerMenu/HamburgerMenu.cs @@ -35,13 +35,11 @@ public override void OnApplyTemplate() if (_buttonsListView != null) { - _buttonsListView.MouseUp -= ButtonsListView_ItemClick; _buttonsListView.SelectionChanged -= ButtonsListView_SelectionChanged; } if (_optionsListView != null) { - _optionsListView.MouseUp -= OptionsListView_ItemClick; _optionsListView.SelectionChanged -= OptionsListView_SelectionChanged; } @@ -56,13 +54,11 @@ public override void OnApplyTemplate() if (_buttonsListView != null) { - _buttonsListView.MouseUp += ButtonsListView_ItemClick; _buttonsListView.SelectionChanged += ButtonsListView_SelectionChanged; } if (_optionsListView != null) { - _optionsListView.MouseUp += OptionsListView_ItemClick; _optionsListView.SelectionChanged += OptionsListView_SelectionChanged; } @@ -81,6 +77,16 @@ private void HamburgerMenu_Loaded(object sender, RoutedEventArgs e) return; } + if (RaiseItemEvents(_buttonsListView?.SelectedItem)) + { + return; + } + + if (RaiseOptionsItemEvents(_optionsListView?.SelectedItem)) + { + return; + } + var selectedItem = _buttonsListView?.SelectedItem ?? _optionsListView?.SelectedItem; if (selectedItem != null) { @@ -88,4 +94,4 @@ private void HamburgerMenu_Loaded(object sender, RoutedEventArgs e) } } } -} +} \ No newline at end of file diff --git a/src/MahApps.Metro/Themes/HamburgerMenuTemplate.xaml b/src/MahApps.Metro/Themes/HamburgerMenuTemplate.xaml index 5571851452..7bb38f9f2a 100644 --- a/src/MahApps.Metro/Themes/HamburgerMenuTemplate.xaml +++ b/src/MahApps.Metro/Themes/HamburgerMenuTemplate.xaml @@ -349,6 +349,7 @@ Controls:ScrollViewerHelper.VerticalScrollBarOnLeftSide="{TemplateBinding VerticalScrollBarOnLeftSide}" AutomationProperties.Name="Menu items" Foreground="{TemplateBinding PaneForeground}" + IsTextSearchEnabled="False" ItemContainerStyle="{TemplateBinding ItemContainerStyle}" ItemTemplate="{TemplateBinding ItemTemplate}" ItemTemplateSelector="{TemplateBinding ItemTemplateSelector}" @@ -366,6 +367,7 @@ VerticalAlignment="Bottom" AutomationProperties.Name="Option items" Foreground="{TemplateBinding PaneForeground}" + IsTextSearchEnabled="False" ItemContainerStyle="{TemplateBinding OptionsItemContainerStyle}" ItemTemplate="{TemplateBinding OptionsItemTemplate}" ItemTemplateSelector="{TemplateBinding OptionsItemTemplateSelector}"