From 145c47711f8a44791bcd7239f173de5decf5d880 Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Fri, 3 May 2019 22:14:25 +0800 Subject: [PATCH] completed basic function --- .../Controls/SideMenu/SideMenu.cs | 25 +++++++++++++++---- .../Controls/SideMenu/SideMenuItem.cs | 10 +++----- .../Data/Enum/ExpandMode.cs | 25 +++++++++++++++++++ .../HandyControl_Shared.projitems | 1 + .../Themes/Styles/Base/SideMenuBaseStyle.xaml | 4 +-- 5 files changed, 51 insertions(+), 14 deletions(-) create mode 100644 src/Shared/HandyControl_Shared/Data/Enum/ExpandMode.cs diff --git a/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenu.cs b/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenu.cs index d419a4cd..6fa96617 100644 --- a/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenu.cs +++ b/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenu.cs @@ -9,6 +9,8 @@ namespace HandyControl.Controls private SideMenuItem _selectedHeader; + private bool _isItemSelected; + public SideMenu() { AddHandler(SideMenuItem.SelectedEvent, new RoutedEventHandler(SideMenuItemSelected)); @@ -27,17 +29,30 @@ namespace HandyControl.Controls _selectedItem = item; _selectedItem.IsSelected = true; + _isItemSelected = true; } else { - if (_selectedHeader != null) + if (!Equals(item, _selectedHeader)) { - _selectedHeader.IsSelected = false; + if (_selectedHeader != null) + { + _selectedHeader.IsSelected = false; + } + + _selectedHeader = item; + _selectedHeader.IsSelected = true; } - _selectedHeader = item; - _selectedHeader.IsSelected = true; - _selectedHeader.SelectDefaultItem(_selectedItem); + if (_isItemSelected) + { + _isItemSelected = false; + } + else + { + _selectedHeader.SelectDefaultItem(); + _isItemSelected = false; + } } } } diff --git a/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenuItem.cs b/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenuItem.cs index c5fa28f9..7337bef5 100644 --- a/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenuItem.cs +++ b/src/Shared/HandyControl_Shared/Controls/SideMenu/SideMenuItem.cs @@ -72,20 +72,16 @@ namespace HandyControl.Controls if (_isMouseLeftButtonDown) { - if (!IsSelected) - { - IsSelected = true; - OnSelected(new RoutedEventArgs(SelectedEvent, this)); - } + IsSelected = true; + OnSelected(new RoutedEventArgs(SelectedEvent, this)); _isMouseLeftButtonDown = false; } } - internal void SelectDefaultItem(SideMenuItem menuItem) + internal void SelectDefaultItem() { if (Role == SideMenuItemRole.Header && ItemsHost.Children.Count > 0) { - if (ItemsHost.Children.Contains(menuItem)) return; var item = ItemsHost.Children.OfType().FirstOrDefault(); if (item != null && !item.IsSelected) { diff --git a/src/Shared/HandyControl_Shared/Data/Enum/ExpandMode.cs b/src/Shared/HandyControl_Shared/Data/Enum/ExpandMode.cs new file mode 100644 index 00000000..ab404a40 --- /dev/null +++ b/src/Shared/HandyControl_Shared/Data/Enum/ExpandMode.cs @@ -0,0 +1,25 @@ +namespace HandyControl.Data.Enum +{ + public enum ExpandMode + { + /// + /// 显示所有项,且不可折叠 + /// + ShowAll, + + /// + /// 最多只能显示一项,且不可折叠 + /// + ShowOne, + + /// + /// 类似ShowOne,但是控件的尺寸不随项的数量而改变 + /// + Accordion, + + /// + /// 没有任何限制 + /// + Freedom + } +} diff --git a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems index 1a7ed268..d2ceb0df 100644 --- a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems +++ b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems @@ -112,6 +112,7 @@ + diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Base/SideMenuBaseStyle.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Base/SideMenuBaseStyle.xaml index 720a9584..64ff65c6 100644 --- a/src/Shared/HandyControl_Shared/Themes/Styles/Base/SideMenuBaseStyle.xaml +++ b/src/Shared/HandyControl_Shared/Themes/Styles/Base/SideMenuBaseStyle.xaml @@ -28,7 +28,7 @@ - + @@ -75,7 +75,7 @@ - +