From f9614d3b17ec3f06b38ee4ed74db20e0c855d546 Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Tue, 23 Jun 2020 00:28:30 +0800 Subject: [PATCH] update InputClickHelper --- .../HandyControl_Shared.projitems | 2 +- .../Helper/{Input => }/InputClickHelper.cs | 70 ++++++++----------- 2 files changed, 29 insertions(+), 43 deletions(-) rename src/Shared/HandyControl_Shared/Tools/Helper/{Input => }/InputClickHelper.cs (82%) diff --git a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems index 53148d5a..cc7d116a 100644 --- a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems +++ b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems @@ -346,7 +346,7 @@ - + diff --git a/src/Shared/HandyControl_Shared/Tools/Helper/Input/InputClickHelper.cs b/src/Shared/HandyControl_Shared/Tools/Helper/InputClickHelper.cs similarity index 82% rename from src/Shared/HandyControl_Shared/Tools/Helper/Input/InputClickHelper.cs rename to src/Shared/HandyControl_Shared/Tools/Helper/InputClickHelper.cs index 7119cd3f..b0475a17 100644 --- a/src/Shared/HandyControl_Shared/Tools/Helper/Input/InputClickHelper.cs +++ b/src/Shared/HandyControl_Shared/Tools/Helper/InputClickHelper.cs @@ -2,15 +2,22 @@ using System.Windows; using System.Windows.Input; -namespace HandyControl.Tools.Input +namespace HandyControl.Tools { /// - /// 输入层点击帮助类 + /// 输入层点击帮助类 /// public static class InputClickHelper { + private static readonly DependencyProperty InputInfoProperty = DependencyProperty.RegisterAttached( + "InputInfo", typeof(InputInfo), typeof(InputClickHelper), new PropertyMetadata(default(InputInfo))); + + private static void SetInputInfo(DependencyObject element, InputInfo value) => element.SetValue(InputInfoProperty, value); + + private static InputInfo GetInputInfo(DependencyObject element) => (InputInfo)element.GetValue(InputInfoProperty); + /// - /// 将 MouseDown MouseMove MouseUp 封装为点击事件 + /// 将 MouseDown MouseMove MouseUp 封装为点击事件 /// /// 要被附加的元素 /// 点击的事件 @@ -34,7 +41,7 @@ namespace HandyControl.Tools.Input } /// - /// 去掉对 的点击时间的监听 + /// 去掉对 的点击时间的监听 /// /// /// 点击的事件 @@ -43,10 +50,7 @@ namespace HandyControl.Tools.Input EventHandler dragStarted = null) { var inputInfo = GetInputInfo(element); - if (inputInfo == null) - { - return; - } + if (inputInfo == null) return; inputInfo.ClickEventHandler -= clickEventHandler; inputInfo.DragStarted -= dragStarted; @@ -63,34 +67,28 @@ namespace HandyControl.Tools.Input private static void Element_LostMouseCapture(object sender, MouseEventArgs e) { - var element = (UIElement) sender; + var element = (UIElement)sender; GetInputInfo(element)?.LostCapture(); } private static void Element_MouseUp(object sender, MouseButtonEventArgs e) { - var element = (UIElement) sender; - + var element = (UIElement)sender; GetInputInfo(element)?.Up(e.GetPosition(element)); } private static void Element_MouseMove(object sender, MouseEventArgs e) { - var element = (UIElement) sender; - + var element = (UIElement)sender; GetInputInfo(element)?.Move(e.GetPosition(element)); } private static void Element_MouseDown(object sender, MouseButtonEventArgs e) { - var element = (UIElement) sender; - + var element = (UIElement)sender; GetInputInfo(element)?.Down(e.GetPosition(element)); } - private static readonly DependencyProperty InputInfoProperty = DependencyProperty.RegisterAttached( - "InputInfo", typeof(InputInfo), typeof(InputClickHelper), new PropertyMetadata(default(InputInfo))); - private static InputInfo GetOrCreateInputInfo(UIElement element) { var inputInfo = GetInputInfo(element); @@ -103,18 +101,18 @@ namespace HandyControl.Tools.Input return inputInfo; } - private static void SetInputInfo(DependencyObject element, InputInfo value) - { - element.SetValue(InputInfoProperty, value); - } - - private static InputInfo GetInputInfo(DependencyObject element) - { - return (InputInfo) element.GetValue(InputInfoProperty); - } - private class InputInfo { + private const double ToleranceSquared = 0.01; + + private Point _downedPosition; + + private bool _isClick; + + public event EventHandler ClickEventHandler; + + public event EventHandler DragStarted; + public void Down(Point position) { _downedPosition = position; @@ -134,8 +132,7 @@ namespace HandyControl.Tools.Input public void Up(Point position) { - _isClick = _isClick - && (position - _downedPosition).LengthSquared <= ToleranceSquared; + _isClick = _isClick && (position - _downedPosition).LengthSquared <= ToleranceSquared; if (!_isClick) return; @@ -144,20 +141,9 @@ namespace HandyControl.Tools.Input _isClick = false; } - public void LostCapture() - { - _isClick = false; - } - - public double ToleranceSquared { set; get; } = 0.01; - - public event EventHandler ClickEventHandler; - public event EventHandler DragStarted; + public void LostCapture() => _isClick = false; public bool IsEmpty() => ClickEventHandler is null && DragStarted is null; - - private Point _downedPosition; - private bool _isClick; } } } \ No newline at end of file