清理ColorPicker,进度条。修复UI问题

This commit is contained in:
2026-02-23 16:49:34 +08:00
parent 1d939d52ed
commit 18174b404c
29 changed files with 1028 additions and 576 deletions

View File

@@ -229,6 +229,8 @@ public class ColorPanel : Control
{
SelectPresetColorCommand = new RelayCommand(ExecuteSelectPresetColor);
Loaded += OnPanelLoaded;
// 拦截面板内所有未处理的左键点击事件防止穿透给其他控件如DataGrid导致焦点切换问题
this.MouseLeftButtonDown += (s, e) => e.Handled = true;
}
/// <summary>
@@ -317,8 +319,15 @@ public class ColorPanel : Control
Debug.Assert(colorCanvas != null, nameof(colorCanvas) + " != null");
if (colorCanvas == null) return;
colorCanvas.CaptureMouse();
// 先解绑再绑定,防止重复点击时引发的多次订阅问题
colorCanvas.MouseMove -= ColorCanvas_MouseMove;
colorCanvas.MouseUp -= ColorCanvas_MouseUp;
colorCanvas.MouseMove += ColorCanvas_MouseMove;
colorCanvas.MouseUp += ColorCanvas_MouseUp;
// 标记事件为已处理,防止冒泡触发 DataGrid 的焦点切换
//e.Handled = true;
}
private void ColorCanvas_MouseUp(object sender, MouseButtonEventArgs e)
@@ -329,6 +338,7 @@ public class ColorPanel : Control
colorCanvas.ReleaseMouseCapture();
colorCanvas.MouseMove -= ColorCanvas_MouseMove;
colorCanvas.MouseUp -= ColorCanvas_MouseUp;
//e.Handled = true;
}
private void ColorCanvas_MouseMove(object sender, MouseEventArgs e)