From e5029aa5dd7b3167d974479d3ac05bf6d267b4af Mon Sep 17 00:00:00 2001
From: NaBian <836904362@qq.com>
Date: Tue, 17 Sep 2019 00:49:35 +0800
Subject: [PATCH] add SplitButton
---
README.md | 4 +++
.../HandyControlDemo_Shared.projitems | 1 -
.../Resources/Themes/Styles/Style.xaml | 5 +--
.../Basic/CustomSplitButtonItem.cs | 10 ------
.../Controls/SplitButtonDemoCtl.xaml | 33 +++++++------------
.../Controls/Block/FloatingBlock.cs | 8 ++---
.../Button/{SplitButton => }/SplitButton.cs | 27 ++++++---------
.../Button/SplitButton/ISplitButtonItem.cs | 6 ----
.../Button/SplitButton/SplitButtonItem.cs | 9 -----
.../Controls/Input/DateTimePicker.cs | 1 -
.../HandyControl_Shared.projitems | 4 +--
.../Styles/Base/SplitButtonBaseStyle.xaml | 13 ++------
12 files changed, 34 insertions(+), 87 deletions(-)
delete mode 100644 src/Shared/HandyControlDemo_Shared/UserControl/Basic/CustomSplitButtonItem.cs
rename src/Shared/HandyControl_Shared/Controls/Button/{SplitButton => }/SplitButton.cs (79%)
delete mode 100644 src/Shared/HandyControl_Shared/Controls/Button/SplitButton/ISplitButtonItem.cs
delete mode 100644 src/Shared/HandyControl_Shared/Controls/Button/SplitButton/SplitButtonItem.cs
diff --git a/README.md b/README.md
index f6426bca..c6676eac 100644
--- a/README.md
+++ b/README.md
@@ -63,6 +63,10 @@ Step 4:enjoy coding
## Latest examples
+### SplitButton
+
+
+
### FloatingBlock

diff --git a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
index 347a43c1..38e214fb 100644
--- a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
+++ b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
@@ -38,7 +38,6 @@
ChatBox.xaml
-
InteractiveDialog.xaml
diff --git a/src/Shared/HandyControlDemo_Shared/Resources/Themes/Styles/Style.xaml b/src/Shared/HandyControlDemo_Shared/Resources/Themes/Styles/Style.xaml
index 9167c105..49a0d290 100644
--- a/src/Shared/HandyControlDemo_Shared/Resources/Themes/Styles/Style.xaml
+++ b/src/Shared/HandyControlDemo_Shared/Resources/Themes/Styles/Style.xaml
@@ -1,7 +1,6 @@
+ xmlns:hc="https://handyorg.github.io/handycontrol">
@@ -99,6 +98,4 @@
-
-
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Basic/CustomSplitButtonItem.cs b/src/Shared/HandyControlDemo_Shared/UserControl/Basic/CustomSplitButtonItem.cs
deleted file mode 100644
index 3dfadad9..00000000
--- a/src/Shared/HandyControlDemo_Shared/UserControl/Basic/CustomSplitButtonItem.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using System.Windows.Controls;
-using HandyControl.Controls;
-
-namespace HandyControlDemo.UserControl
-{
- public class CustomSplitButtonItem : ComboBoxItem, ISplitButtonItem
- {
-
- }
-}
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/SplitButtonDemoCtl.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/SplitButtonDemoCtl.xaml
index 58cbf87f..60e55413 100644
--- a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/SplitButtonDemoCtl.xaml
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/SplitButtonDemoCtl.xaml
@@ -7,39 +7,30 @@
DataContext="{Binding SplitButtonDemo,Source={StaticResource Locator}}">
-
+
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/src/Shared/HandyControl_Shared/Controls/Block/FloatingBlock.cs b/src/Shared/HandyControl_Shared/Controls/Block/FloatingBlock.cs
index 5901c7ed..f838f2bf 100644
--- a/src/Shared/HandyControl_Shared/Controls/Block/FloatingBlock.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Block/FloatingBlock.cs
@@ -101,13 +101,13 @@ namespace HandyControl.Controls
{
if (!(d is UIElement target)) return;
- target.RemoveHandler(PreviewMouseLeftButtonDownEvent, new MouseButtonEventHandler(Target_PreviewMouseLeftButtonDown));
- target.RemoveHandler(PreviewMouseLeftButtonUpEvent, new MouseButtonEventHandler(Target_PreviewMouseLeftButtonUp));
+ target.PreviewMouseLeftButtonDown -= Target_PreviewMouseLeftButtonDown;
+ target.PreviewMouseLeftButtonUp -= Target_PreviewMouseLeftButtonUp;
if (e.NewValue != null)
{
- target.AddHandler(PreviewMouseLeftButtonDownEvent, new MouseButtonEventHandler(Target_PreviewMouseLeftButtonDown));
- target.AddHandler(PreviewMouseLeftButtonUpEvent, new MouseButtonEventHandler(Target_PreviewMouseLeftButtonUp));
+ target.PreviewMouseLeftButtonDown += Target_PreviewMouseLeftButtonDown;
+ target.PreviewMouseLeftButtonUp += Target_PreviewMouseLeftButtonUp;
}
}
diff --git a/src/Shared/HandyControl_Shared/Controls/Button/SplitButton/SplitButton.cs b/src/Shared/HandyControl_Shared/Controls/Button/SplitButton.cs
similarity index 79%
rename from src/Shared/HandyControl_Shared/Controls/Button/SplitButton/SplitButton.cs
rename to src/Shared/HandyControl_Shared/Controls/Button/SplitButton.cs
index 6995ab89..0bdd19e7 100644
--- a/src/Shared/HandyControl_Shared/Controls/Button/SplitButton/SplitButton.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Button/SplitButton.cs
@@ -7,13 +7,8 @@ using HandyControl.Data.Enum;
namespace HandyControl.Controls
{
- [TemplatePart(Name = ElementArrow, Type = typeof(ToggleButton))]
public class SplitButton : ButtonBase
{
- private const string ElementArrow = "PART_Arrow";
-
- private ToggleButton _toggleArrow;
-
public static readonly DependencyProperty HitModeProperty = DependencyProperty.Register(
"HitMode", typeof(MouseHitMode), typeof(SplitButton), new PropertyMetadata(default(MouseHitMode)));
@@ -55,18 +50,11 @@ namespace HandyControl.Controls
AddHandler(MenuItem.ClickEvent, new RoutedEventHandler(ItemsOnClick));
}
- public override void OnApplyTemplate()
- {
- base.OnApplyTemplate();
-
- _toggleArrow = GetTemplateChild(ElementArrow) as ToggleButton;
- }
-
private void ItemsOnClick(object sender, RoutedEventArgs e)
{
- if (e.OriginalSource is ISplitButtonItem)
+ if (e.OriginalSource is MenuItem)
{
- SetCurrentValue(IsDropDownOpenProperty, false);
+ SetCurrentValue(IsDropDownOpenProperty, ValueBoxes.FalseBox);
}
}
@@ -78,10 +66,15 @@ namespace HandyControl.Controls
{
e.Handled = true;
}
- else if (_toggleArrow != null && _toggleArrow.IsMouseOver)
+ }
+
+ protected override void OnMouseEnter(MouseEventArgs e)
+ {
+ base.OnMouseEnter(e);
+
+ if (HitMode == MouseHitMode.Hover)
{
- SetCurrentValue(IsDropDownOpenProperty, _toggleArrow.IsChecked != true);
- e.Handled = true;
+ SetCurrentValue(IsDropDownOpenProperty, ValueBoxes.TrueBox);
}
}
}
diff --git a/src/Shared/HandyControl_Shared/Controls/Button/SplitButton/ISplitButtonItem.cs b/src/Shared/HandyControl_Shared/Controls/Button/SplitButton/ISplitButtonItem.cs
deleted file mode 100644
index c0df5384..00000000
--- a/src/Shared/HandyControl_Shared/Controls/Button/SplitButton/ISplitButtonItem.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace HandyControl.Controls
-{
- public interface ISplitButtonItem
- {
- }
-}
diff --git a/src/Shared/HandyControl_Shared/Controls/Button/SplitButton/SplitButtonItem.cs b/src/Shared/HandyControl_Shared/Controls/Button/SplitButton/SplitButtonItem.cs
deleted file mode 100644
index 8f4d6b58..00000000
--- a/src/Shared/HandyControl_Shared/Controls/Button/SplitButton/SplitButtonItem.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using System.Windows.Controls;
-
-namespace HandyControl.Controls
-{
- public class SplitButtonItem : MenuItem, ISplitButtonItem
- {
-
- }
-}
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs b/src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs
index 55427b99..843a7d3b 100644
--- a/src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs
@@ -147,7 +147,6 @@ namespace HandyControl.Controls
dp._calendarWithClock.Focus();
});
}
-
}
}
diff --git a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
index ae13a98c..8c3bb78b 100644
--- a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
+++ b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
@@ -21,9 +21,7 @@
-
-
-
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Base/SplitButtonBaseStyle.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Base/SplitButtonBaseStyle.xaml
index 9da8e511..b173b635 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/Base/SplitButtonBaseStyle.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/Base/SplitButtonBaseStyle.xaml
@@ -7,8 +7,6 @@
-
-