From d5b8e1cd5878bff2890cbaecf37b40cc9435638f Mon Sep 17 00:00:00 2001 From: Tongg Date: Thu, 12 Dec 2024 17:33:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=203D=E5=8F=B3=E9=94=AE=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Views/UserControl/Viewport3D.xaml | 4 ++-- Views/UserControl/Viewport3D.xaml.cs | 34 ++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/Views/UserControl/Viewport3D.xaml b/Views/UserControl/Viewport3D.xaml index 772b276..fca505d 100644 --- a/Views/UserControl/Viewport3D.xaml +++ b/Views/UserControl/Viewport3D.xaml @@ -75,7 +75,7 @@ - + @@ -95,7 +95,7 @@ - + diff --git a/Views/UserControl/Viewport3D.xaml.cs b/Views/UserControl/Viewport3D.xaml.cs index cdaa1e1..01bb24c 100644 --- a/Views/UserControl/Viewport3D.xaml.cs +++ b/Views/UserControl/Viewport3D.xaml.cs @@ -172,15 +172,29 @@ public partial class Viewport3D #endregion #region 页面隐式交互 + private System.Windows.Point _mouseDownPosition; + private bool _isDragging = false; private void UIElement_OnPreviewMouseRightButtonUp(object sender, MouseButtonEventArgs e) { + if (_isDragging) + { + // 如果发生拖动,不显示菜单 + _isDragging = false; // 重置拖动状态 + MainBorder.ContextMenu.Visibility = Visibility.Hidden; + MainBorder.ContextMenu.IsOpen = false; + return; + } + MainBorder.ContextMenu.Visibility = Visibility.Visible; + // 未拖动时,显示右键菜单 MainBorder.ContextMenu.IsOpen = true; + // e.Handled = true; // 阻止事件继续传播 } private void UIElement_OnPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) { - MainBorder.ContextMenu.IsOpen = false; - e.Handled = true; + _mouseDownPosition = e.GetPosition(Viewport3Dx); + _isDragging = false; // 重置拖动状态 + } #endregion @@ -189,4 +203,20 @@ public partial class Viewport3D //ViewportData.LoadData(); ViewportManager.LoadModelByEntities(new List()); } + + private void Viewport3Dx_OnPreviewMouseMove(object sender, MouseEventArgs e) + { + if (e.RightButton == MouseButtonState.Pressed) + { + // 计算鼠标移动距离 + var currentPosition = e.GetPosition(Viewport3Dx); + var distance = (currentPosition - _mouseDownPosition).Length; + + // 判断是否达到拖动的阈值 + if (distance > 5) // 阈值可根据需要调整 + { + _isDragging = true; // 标记为拖动 + } + } + } } \ No newline at end of file