From 224cc4458b32e76afc0ae471b07c78984e2287b6 Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Mon, 3 Jun 2019 21:00:57 +0800 Subject: [PATCH] fixed a bug of SideMenu --- .../Controls/SideMenu/SideMenu.cs | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) 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; + } + } + } + } + } } }