From 09713f70bf86556e8e8bd27cafa872ead2103463 Mon Sep 17 00:00:00 2001
From: PrefacedCorg <1876568293@qq.com>
Date: Sat, 2 May 2026 15:34:18 +0800
Subject: [PATCH] =?UTF-8?q?add:=E6=8C=89=E9=92=AE=E6=B7=BB=E5=8A=A0?=
=?UTF-8?q?=E5=9C=86=E8=A7=92=E5=92=8C=E9=98=B4=E5=BD=B1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
InkCanvas.Controls/ToolMenuButton.xaml | 64 ++++++++++++-----------
InkCanvas.Controls/ToolMenuButton.xaml.cs | 27 ++++++++--
2 files changed, 58 insertions(+), 33 deletions(-)
diff --git a/InkCanvas.Controls/ToolMenuButton.xaml b/InkCanvas.Controls/ToolMenuButton.xaml
index d789f494..8a5b70f7 100644
--- a/InkCanvas.Controls/ToolMenuButton.xaml
+++ b/InkCanvas.Controls/ToolMenuButton.xaml
@@ -6,33 +6,37 @@
xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf"
mc:Ignorable="d"
d:DesignHeight="38" d:DesignWidth="32">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/InkCanvas.Controls/ToolMenuButton.xaml.cs b/InkCanvas.Controls/ToolMenuButton.xaml.cs
index 63ffe48e..284c4c1a 100644
--- a/InkCanvas.Controls/ToolMenuButton.xaml.cs
+++ b/InkCanvas.Controls/ToolMenuButton.xaml.cs
@@ -9,6 +9,7 @@ namespace Ink_Canvas.Controls
{
private Geometry _pendingGeometry;
private Brush _pendingBrush;
+ private static ToolMenuButton _lastPressedButton;
public static readonly DependencyProperty LabelProperty = DependencyProperty.Register(
nameof(Label), typeof(string), typeof(ToolMenuButton),
@@ -68,8 +69,8 @@ namespace Ink_Canvas.Controls
public new Brush Background
{
- get => ButtonPanel.Background;
- set => ButtonPanel.Background = value;
+ get => ButtonBorder.Background;
+ set => ButtonBorder.Background = value;
}
public GeometryDrawing Icon
@@ -90,6 +91,7 @@ namespace Ink_Canvas.Controls
{
InitializeComponent();
Loaded += ToolMenuButton_Loaded;
+ ButtonBorder.Background = Brushes.Transparent;
}
private void ToolMenuButton_Loaded(object sender, RoutedEventArgs e)
@@ -105,17 +107,36 @@ namespace Ink_Canvas.Controls
private void ButtonPanel_MouseDown(object sender, MouseButtonEventArgs e)
{
+ if (!IsEnabled) return;
+ if (_lastPressedButton != null && _lastPressedButton != this)
+ {
+ _lastPressedButton.ButtonBorder.Background = Brushes.Transparent;
+ }
+ _lastPressedButton = this;
+ ButtonBorder.Background = new SolidColorBrush(Color.FromArgb(80, 24, 24, 27));
ButtonMouseDown?.Invoke(this, e);
}
private void ButtonPanel_MouseLeave(object sender, MouseEventArgs e)
{
+ if (!IsEnabled) return;
+ if (_lastPressedButton == this)
+ {
+ ButtonBorder.Background = Brushes.Transparent;
+ _lastPressedButton = null;
+ }
ButtonMouseLeave?.Invoke(this, e);
}
private void ButtonPanel_MouseUp(object sender, MouseButtonEventArgs e)
{
+ if (!IsEnabled) return;
+ if (_lastPressedButton == this)
+ {
+ ButtonBorder.Background = Brushes.Transparent;
+ _lastPressedButton = null;
+ }
ButtonMouseUp?.Invoke(this, e);
}
}
-}
+}
\ No newline at end of file