diff --git a/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenu.cs b/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenu.cs index 02656070..21a2e572 100644 --- a/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenu.cs +++ b/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenu.cs @@ -141,8 +141,41 @@ namespace HandyControl.Controls } else if (mode == ExpandMode.ShowOne) { - var sideMenuItem = ItemsHost.Children.OfType().FirstOrDefault(item => item.IsSelected); - ShowSelectedOne(sideMenuItem); + SideMenuItem sideMenuItemSelected = null; + foreach (var sideMenuItem in ItemsHost.Children.OfType()) + { + if (sideMenuItemSelected != null) + { + sideMenuItem.IsSelected = false; + if (sideMenuItem.ItemsHost != null) + { + foreach (var sideMenuSubItem in sideMenuItem.ItemsHost.Children.OfType()) + { + sideMenuSubItem.IsSelected = false; + } + } + } + else if (sideMenuItem.IsSelected) + { + ShowSelectedOne(sideMenuItem); + sideMenuItemSelected = sideMenuItem; + + if (sideMenuItem.ItemsHost != null) + { + foreach (var sideMenuSubItem in sideMenuItem.ItemsHost.Children.OfType()) + { + if (_selectedItem != null) + { + sideMenuSubItem.IsSelected = false; + } + else if (sideMenuSubItem.IsSelected) + { + _selectedItem = sideMenuSubItem; + } + } + } + } + } } }