From 6a938f680dfa2d4e0fe0b0b00fd0e8b2a45161ec Mon Sep 17 00:00:00 2001 From: zengwenjie <1663900244@qq.com> Date: Fri, 26 Sep 2025 15:33:21 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=86=99=E3=80=8CActionViewer?= =?UTF-8?q?=E3=80=8D=E7=B1=BB=E7=9A=84=E3=80=8COnDragOver=E3=80=8D?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DeedyDesigner/Deedy.Activity/ActionViewer.cs | 32 +++++++++---------- .../Deedy.Activity/Helpers/VisualHelper.cs | 4 +-- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/DeedyDesigner/Deedy.Activity/ActionViewer.cs b/DeedyDesigner/Deedy.Activity/ActionViewer.cs index e26a4ad..cc94ff4 100644 --- a/DeedyDesigner/Deedy.Activity/ActionViewer.cs +++ b/DeedyDesigner/Deedy.Activity/ActionViewer.cs @@ -17,6 +17,7 @@ using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; +using Deedy.Activity.Helpers; namespace Deedy.Activity { @@ -745,7 +746,7 @@ namespace Deedy.Activity } protected internal bool _CanDropInParent = false; // 通过组装校验逻辑设置此字段 protected internal bool _CanDropChild = false; // 通过组装校验逻辑设置此字段 - protected internal DropPlacement _DropPlacement = DropPlacement.Uncertain; // 用于最终放置逻辑 + protected internal DropPlacement _DropPlacement = DropPlacement.UnDragged; // 用于最终放置逻辑 protected override void OnDragOver(DragEventArgs e) { //HACK:这里要考虑父容器的布局方向 @@ -756,22 +757,21 @@ namespace Deedy.Activity if (this.TitleContainer != null && this.TitleContainer.Visibility == Visibility.Visible) hitElement = this.TitleContainer; - Point currentPoint = e.GetPosition(hitElement); - if (this._CanDropInParent && (currentPoint.Y < 10 || currentPoint.Y < 10)) - { - this._DropPlacement = DropPlacement.BeforeMe; + this._DropPlacement = this.ActionElement.Help_CheckDropPlacement(hitElement.RenderSize, e.GetPosition(hitElement)); + if (false + || (this._CanDropInParent + && (this._DropPlacement == DropPlacement.BeforeMe + || this._DropPlacement == DropPlacement.BehindMe + || this._DropPlacement == DropPlacement.ReplaceMe + ) + ) + || (this._CanDropChild + && (this._DropPlacement == DropPlacement.Uncertain + || this._DropPlacement == DropPlacement.WithinMe + ) + ) + ) this.UpdateDragAdorner(this._DropPlacement, (this.ActionElement?.ParentElement as ICombinedElement)?.Direction); - } - else if (this._CanDropInParent && (hitElement.ActualHeight - currentPoint.Y < 10 || hitElement.ActualWidth - currentPoint.X < 10)) - { - this._DropPlacement = DropPlacement.BehindMe; - this.UpdateDragAdorner(this._DropPlacement, (this.ActionElement?.ParentElement as ICombinedElement)?.Direction); - } - else if (this._CanDropChild) - { - this._DropPlacement = DropPlacement.WithinMe; - this.UpdateDragAdorner(this._DropPlacement); - } else { this._DropPlacement = DropPlacement.Rejected; diff --git a/DeedyDesigner/Deedy.Activity/Helpers/VisualHelper.cs b/DeedyDesigner/Deedy.Activity/Helpers/VisualHelper.cs index c535a3e..4321438 100644 --- a/DeedyDesigner/Deedy.Activity/Helpers/VisualHelper.cs +++ b/DeedyDesigner/Deedy.Activity/Helpers/VisualHelper.cs @@ -87,9 +87,9 @@ namespace Deedy.Activity.Helpers DropPlacement result = DropPlacement.UnDragged; if (element != null) { - double horRuler = size.Width / 3; + double horRuler = size.Width / 4; if (horRuler > 20) horRuler = 20; - double verRuler = size.Height / 3; + double verRuler = size.Height / 4; if (verRuler > 20) verRuler = 20; LayoutDirection direction = LayoutDirection.Cannot; if (element is ICombinedElement)