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