From edc94547ab896b27df757498c1f093e6ac8e3183 Mon Sep 17 00:00:00 2001 From: PrefacedCorg <1876568293@qq.com> Date: Fri, 17 Apr 2026 01:20:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow.xaml | 53 ++++++------------- Ink Canvas/MainWindow.xaml.cs | 2 +- Ink Canvas/MainWindow_cs/MW_AutoFold.cs | 6 +-- .../MainWindow_cs/MW_FloatingBarIcons.cs | 34 ++++++------ .../MainWindow_cs/MW_Save&OpenStrokes.cs | 4 +- Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs | 2 +- InkCanvas.Controls/BoardToolbarButton.xaml.cs | 28 ++++++++++ InkCanvas.Controls/QuickPanelButton.xaml.cs | 4 +- InkCanvas.Controls/ToolMenuButton.xaml.cs | 4 +- InkCanvas.Controls/ToolbarImageButton.xaml.cs | 4 +- 10 files changed, 73 insertions(+), 68 deletions(-) diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index a8032a91..e8473a6a 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -5592,7 +5592,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index e4591fcd..696efd02 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -2884,7 +2884,7 @@ namespace Ink_Canvas ShowPage(currentPageIndex); } // 快速面板退出PPT放映按钮事件 - private void ExitPPTSlideShow_MouseUp(object sender, RoutedEventArgs e) + private void ExitPPTSlideShow_MouseUp(object sender, MouseButtonEventArgs e) { // 直接调用PPT放映结束按钮的逻辑 BtnPPTSlideShowEnd_Click(BtnPPTSlideShowEnd, null); diff --git a/Ink Canvas/MainWindow_cs/MW_AutoFold.cs b/Ink Canvas/MainWindow_cs/MW_AutoFold.cs index 95fd7ec0..f1c95b23 100644 --- a/Ink Canvas/MainWindow_cs/MW_AutoFold.cs +++ b/Ink Canvas/MainWindow_cs/MW_AutoFold.cs @@ -65,7 +65,7 @@ namespace Ink_Canvas /// /// 事件发送者。 /// 路由事件参数。 - public async void FoldFloatingBar_MouseUp(object sender, RoutedEventArgs e) + public async void FoldFloatingBar_MouseUp(object sender, MouseButtonEventArgs e) { await FoldFloatingBar(sender); } @@ -315,7 +315,7 @@ namespace Ink_Canvas /// 1. 隐藏左侧快捷面板 /// 2. 隐藏右侧快捷面板 /// - private void HideQuickPanel_MouseUp(object sender, RoutedEventArgs e) + private void HideQuickPanel_MouseUp(object sender, MouseButtonEventArgs e) { HideLeftQuickPanel(); HideRightQuickPanel(); @@ -326,7 +326,7 @@ namespace Ink_Canvas /// /// 事件发送者。 /// 路由事件参数。 - public async void UnFoldFloatingBar_MouseUp(object sender, RoutedEventArgs e) + public async void UnFoldFloatingBar_MouseUp(object sender, MouseButtonEventArgs e) { await UnFoldFloatingBar(sender); } diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs index 6617fb2d..989d82a0 100644 --- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs @@ -626,7 +626,7 @@ namespace Ink_Canvas /// /// 发送者 /// 鼠标按钮事件参数 - internal void SymbolIconUndo_MouseUp(object sender, RoutedEventArgs e) + internal void SymbolIconUndo_MouseUp(object sender, MouseButtonEventArgs e) { if (!BtnUndo.IsEnabled) return; BtnUndo_Click(BtnUndo, null); @@ -659,7 +659,7 @@ namespace Ink_Canvas /// /// 发送者 /// 鼠标按钮事件参数 - internal void ImageBlackboard_MouseUp(object sender, RoutedEventArgs e) + internal void ImageBlackboard_MouseUp(object sender, MouseButtonEventArgs e) { LeftUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed; @@ -933,7 +933,7 @@ namespace Ink_Canvas /// /// 发送者 /// 鼠标按钮事件参数 - internal void SymbolIconDelete_MouseUp(object sender, RoutedEventArgs e) + internal void SymbolIconDelete_MouseUp(object sender, MouseButtonEventArgs e) { if (inkCanvas.GetSelectedStrokes().Count > 0) { @@ -979,7 +979,7 @@ namespace Ink_Canvas /// /// 发送者 /// 鼠标按钮事件参数 - internal void SymbolIconSelect_MouseUp(object sender, RoutedEventArgs e) + internal void SymbolIconSelect_MouseUp(object sender, MouseButtonEventArgs e) { if (lastBorderMouseDownObject is Panel panel) @@ -1098,7 +1098,7 @@ namespace Ink_Canvas /// /// 发送者 /// 路由事件参数 - private void SymbolIconSettings_Click(object sender, RoutedEventArgs e) + private void SymbolIconSettings_Click(object sender, MouseButtonEventArgs e) { if (isOpeningOrHidingSettingsPane) return; HideSubPanels(); @@ -1110,7 +1110,7 @@ namespace Ink_Canvas /// /// 发送者 /// 路由事件参数 - private async void SymbolIconScreenshot_MouseUp(object sender, RoutedEventArgs e) + private async void SymbolIconScreenshot_MouseUp(object sender, MouseButtonEventArgs e) { HideSubPanelsImmediately(); await Task.Delay(50); @@ -1131,7 +1131,7 @@ namespace Ink_Canvas /// /// 发送者 /// 路由事件参数 - private void ImageCountdownTimer_MouseUp(object sender, RoutedEventArgs e) + private void ImageCountdownTimer_MouseUp(object sender, MouseButtonEventArgs e) { LeftUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed; RightUnFoldButtonQuickPanel.Visibility = Visibility.Collapsed; @@ -1185,7 +1185,7 @@ namespace Ink_Canvas /// /// 发送者 /// 路由事件参数 - private void OperatingGuideWindowIcon_MouseUp(object sender, RoutedEventArgs e) + private void OperatingGuideWindowIcon_MouseUp(object sender, MouseButtonEventArgs e) { AnimationsHelper.HideWithSlideAndFade(BorderTools); AnimationsHelper.HideWithSlideAndFade(BoardBorderTools); @@ -1199,7 +1199,7 @@ namespace Ink_Canvas /// /// 发送者 /// 路由事件参数 - private void SymbolIconRand_MouseUp(object sender, RoutedEventArgs e) + private void SymbolIconRand_MouseUp(object sender, MouseButtonEventArgs e) { // 如果控件被隐藏,不处理事件 if (BoardRandomDrawToolBtn.Visibility != Visibility.Visible) return; @@ -1332,7 +1332,7 @@ namespace Ink_Canvas /// /// 发送者 /// 路由事件参数 - private void SymbolIconRandOne_MouseUp(object sender, RoutedEventArgs e) + private void SymbolIconRandOne_MouseUp(object sender, MouseButtonEventArgs e) { // 如果控件被隐藏,不处理事件 if (BoardSingleDrawToolBtn.Visibility != Visibility.Visible) return; @@ -1407,7 +1407,7 @@ namespace Ink_Canvas /// /// 发送者 /// 路由事件参数 - private void GridInkReplayButton_MouseUp(object sender, RoutedEventArgs e) + private void GridInkReplayButton_MouseUp(object sender, MouseButtonEventArgs e) { //if (lastBorderMouseDownObject != sender) return; @@ -1711,7 +1711,7 @@ namespace Ink_Canvas /// /// 发送者 /// 鼠标按钮事件参数 - private void SymbolIconTools_MouseUp(object sender, RoutedEventArgs e) + private void SymbolIconTools_MouseUp(object sender, MouseButtonEventArgs e) { if (BorderTools.Visibility == Visibility.Visible) { @@ -2117,7 +2117,7 @@ namespace Ink_Canvas /// /// 发送者 /// 路由事件参数 - internal async void CursorIcon_Click(object sender, RoutedEventArgs e) + internal async void CursorIcon_Click(object sender, MouseButtonEventArgs e) { if (lastBorderMouseDownObject is Panel panel) panel.Background = new SolidColorBrush(Colors.Transparent); @@ -2232,7 +2232,7 @@ namespace Ink_Canvas /// /// 发送者 /// 路由事件参数 - internal void PenIcon_Click(object sender, RoutedEventArgs e) + internal void PenIcon_Click(object sender, MouseButtonEventArgs e) { if (lastBorderMouseDownObject is Panel panel) panel.Background = new SolidColorBrush(Colors.Transparent); @@ -2477,7 +2477,7 @@ namespace Ink_Canvas /// /// 发送者 /// 路由事件参数 - internal void EraserIcon_Click(object sender, RoutedEventArgs e) + internal void EraserIcon_Click(object sender, MouseButtonEventArgs e) { bool isAlreadyEraser = inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint; forceEraser = false; @@ -2590,7 +2590,7 @@ namespace Ink_Canvas /// /// 发送者 /// 路由事件参数 - private void EraserIconByStrokes_Click(object sender, RoutedEventArgs e) + private void EraserIconByStrokes_Click(object sender, MouseButtonEventArgs e) { // 禁用高级橡皮擦系统 DisableEraserOverlay(); @@ -2622,7 +2622,7 @@ namespace Ink_Canvas /// /// 发送者 /// 路由事件参数 - private void CursorWithDelIcon_Click(object sender, RoutedEventArgs e) + private void CursorWithDelIcon_Click(object sender, MouseButtonEventArgs e) { SymbolIconDelete_MouseUp(sender, null); CursorIcon_Click(null, null); diff --git a/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs b/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs index e9892ceb..bb42d7c5 100644 --- a/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs +++ b/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs @@ -94,7 +94,7 @@ namespace Ink_Canvas /// 3. 隐藏通知面板 /// 4. 调用SaveInkCanvasStrokes方法保存墨迹 /// - private void SymbolIconSaveStrokes_MouseUp(object sender, RoutedEventArgs e) + private void SymbolIconSaveStrokes_MouseUp(object sender, MouseButtonEventArgs e) { if (lastBorderMouseDownObject != sender || inkCanvas.Visibility != Visibility.Visible) return; @@ -901,7 +901,7 @@ namespace Ink_Canvas /// - 其他:处理单个墨迹文件(二进制格式) /// 5. 如果墨迹画布不可见,切换到鼠标模式 /// - private void SymbolIconOpenStrokes_MouseUp(object sender, RoutedEventArgs e) + private void SymbolIconOpenStrokes_MouseUp(object sender, MouseButtonEventArgs e) { if (lastBorderMouseDownObject != sender) return; AnimationsHelper.HideWithSlideAndFade(BorderTools); diff --git a/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs b/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs index 875c2df8..17d8fe4d 100644 --- a/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs +++ b/Ink Canvas/MainWindow_cs/MW_ShapeDrawing.cs @@ -33,7 +33,7 @@ namespace Ink_Canvas /// 3. 如果形状绘制面板可见,则隐藏它 /// 4. 如果形状绘制面板不可见,则显示它 /// - private void ImageDrawShape_MouseUp(object sender, RoutedEventArgs e) + private void ImageDrawShape_MouseUp(object sender, MouseButtonEventArgs e) { if (BorderDrawShape.Visibility == Visibility.Visible) { diff --git a/InkCanvas.Controls/BoardToolbarButton.xaml.cs b/InkCanvas.Controls/BoardToolbarButton.xaml.cs index 1ffb6a9d..7c715dc4 100644 --- a/InkCanvas.Controls/BoardToolbarButton.xaml.cs +++ b/InkCanvas.Controls/BoardToolbarButton.xaml.cs @@ -113,6 +113,34 @@ namespace Ink_Canvas.Controls set => LabelTextBlock.Foreground = value; } + public static readonly DependencyProperty IsEnabledBindingProperty = DependencyProperty.Register( + nameof(IsEnabledBinding), typeof(bool?), typeof(BoardToolbarButton), + new PropertyMetadata(null, OnIsEnabledBindingChanged)); + + private static void OnIsEnabledBindingChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var button = (BoardToolbarButton)d; + if (e.NewValue is bool isEnabled) + { + button.IsEnabled = isEnabled; + button.UpdateIconOpacity(isEnabled); + } + } + + public bool? IsEnabledBinding + { + get => (bool?)GetValue(IsEnabledBindingProperty); + set => SetValue(IsEnabledBindingProperty, value); + } + + private void UpdateIconOpacity(bool isEnabled) + { + if (ButtonImage != null) + { + ButtonImage.Opacity = isEnabled ? 1.0 : 0.4; + } + } + public BoardToolbarButton() { InitializeComponent(); diff --git a/InkCanvas.Controls/QuickPanelButton.xaml.cs b/InkCanvas.Controls/QuickPanelButton.xaml.cs index f4815f5e..28319da1 100644 --- a/InkCanvas.Controls/QuickPanelButton.xaml.cs +++ b/InkCanvas.Controls/QuickPanelButton.xaml.cs @@ -65,7 +65,7 @@ namespace Ink_Canvas.Controls set => SetValue(LabelFontSizeProperty, value); } - public event RoutedEventHandler ButtonMouseUp; + public event MouseButtonEventHandler ButtonMouseUp; public QuickPanelButton() { @@ -74,7 +74,7 @@ namespace Ink_Canvas.Controls private void ButtonPanel_MouseUp(object sender, MouseButtonEventArgs e) { - ButtonMouseUp?.Invoke(this, new RoutedEventArgs(e.RoutedEvent, this)); + ButtonMouseUp?.Invoke(this, e); } } } diff --git a/InkCanvas.Controls/ToolMenuButton.xaml.cs b/InkCanvas.Controls/ToolMenuButton.xaml.cs index 5d3f455b..63ffe48e 100644 --- a/InkCanvas.Controls/ToolMenuButton.xaml.cs +++ b/InkCanvas.Controls/ToolMenuButton.xaml.cs @@ -84,7 +84,7 @@ namespace Ink_Canvas.Controls public event MouseButtonEventHandler ButtonMouseDown; public event MouseEventHandler ButtonMouseLeave; - public event RoutedEventHandler ButtonMouseUp; + public event MouseButtonEventHandler ButtonMouseUp; public ToolMenuButton() { @@ -115,7 +115,7 @@ namespace Ink_Canvas.Controls private void ButtonPanel_MouseUp(object sender, MouseButtonEventArgs e) { - ButtonMouseUp?.Invoke(this, new RoutedEventArgs(e.RoutedEvent, this)); + ButtonMouseUp?.Invoke(this, e); } } } diff --git a/InkCanvas.Controls/ToolbarImageButton.xaml.cs b/InkCanvas.Controls/ToolbarImageButton.xaml.cs index 17d7940b..ad02cd87 100644 --- a/InkCanvas.Controls/ToolbarImageButton.xaml.cs +++ b/InkCanvas.Controls/ToolbarImageButton.xaml.cs @@ -61,7 +61,7 @@ namespace Ink_Canvas.Controls public event MouseButtonEventHandler ButtonMouseDown; public event MouseEventHandler ButtonMouseLeave; - public event RoutedEventHandler ButtonMouseUp; + public event MouseButtonEventHandler ButtonMouseUp; public ToolbarImageButton() { @@ -104,7 +104,7 @@ namespace Ink_Canvas.Controls ButtonPanel.Background = Brushes.Transparent; _lastPressedButton = null; } - ButtonMouseUp?.Invoke(this, new RoutedEventArgs(e.RoutedEvent, this)); + ButtonMouseUp?.Invoke(this, e); } } }