diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index 17bd2740..160a44d6 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -4963,6 +4963,13 @@ Text="{Binding Index}"> + @@ -7124,6 +7131,13 @@ Text="{Binding Index}"> + diff --git a/Ink Canvas/MainWindow_cs/MW_BoardControls.cs b/Ink Canvas/MainWindow_cs/MW_BoardControls.cs index dca963c2..daa079c9 100644 --- a/Ink Canvas/MainWindow_cs/MW_BoardControls.cs +++ b/Ink Canvas/MainWindow_cs/MW_BoardControls.cs @@ -476,45 +476,60 @@ namespace Ink_Canvas /// /// 处理白板页面删除按钮点击事件,删除当前白板页面 /// - /// 事件发送者 - /// 事件参数 - /// - /// - 隐藏图片选择工具栏 - /// - 清除当前画布内容 - /// - 重新排列剩余页面的历史记录 - /// - 更新当前页面索引和页面总数 - /// - 恢复剩余页面内容 - /// - 更新页码显示 - /// - 启用添加按钮(如果页面总数小于99) - /// private void BtnWhiteBoardDelete_Click(object sender, RoutedEventArgs e) { - // 隐藏图片选择工具栏 + DeleteWhiteBoardPageByIndex(CurrentWhiteboardIndex); + } + + /// + /// 按页码删除指定白板页(用于预览列表等)。仅当总页数大于 1 时有效。 + /// + /// 要删除的页码(1 到 WhiteboardTotalCount) + private void DeleteWhiteBoardPageByIndex(int pageIndex) + { + if (WhiteboardTotalCount <= 1 || pageIndex < 1 || pageIndex > WhiteboardTotalCount) + return; + if (currentSelectedElement != null) { - // 保存当前编辑模式 var previousEditingMode = inkCanvas.EditingMode; UnselectElement(currentSelectedElement); - // 恢复编辑模式 inkCanvas.EditingMode = previousEditingMode; currentSelectedElement = null; } - ClearStrokes(true); - - if (CurrentWhiteboardIndex != WhiteboardTotalCount) - for (var i = CurrentWhiteboardIndex; i <= WhiteboardTotalCount; i++) + if (pageIndex == CurrentWhiteboardIndex) + { + ClearStrokes(true); + if (CurrentWhiteboardIndex != WhiteboardTotalCount) + for (var i = CurrentWhiteboardIndex; i <= WhiteboardTotalCount; i++) + TimeMachineHistories[i] = TimeMachineHistories[i + 1]; + else + CurrentWhiteboardIndex--; + WhiteboardTotalCount--; + RestoreStrokes(); + } + else if (pageIndex < CurrentWhiteboardIndex) + { + for (var i = pageIndex; i < WhiteboardTotalCount; i++) TimeMachineHistories[i] = TimeMachineHistories[i + 1]; - else + TimeMachineHistories[WhiteboardTotalCount] = null; + WhiteboardTotalCount--; CurrentWhiteboardIndex--; - - WhiteboardTotalCount--; - - RestoreStrokes(); + } + else + { + for (var i = pageIndex; i < WhiteboardTotalCount; i++) + TimeMachineHistories[i] = TimeMachineHistories[i + 1]; + TimeMachineHistories[WhiteboardTotalCount] = null; + WhiteboardTotalCount--; + } UpdateIndexInfoDisplay(); - if (WhiteboardTotalCount < 99) BtnWhiteBoardAdd.IsEnabled = true; + if (BoardBorderLeftPageListView?.Visibility == Visibility.Visible || + BoardBorderRightPageListView?.Visibility == Visibility.Visible) + RefreshBlackBoardSidePageListView(); } /// diff --git a/Ink Canvas/MainWindow_cs/MW_PageListView.cs b/Ink Canvas/MainWindow_cs/MW_PageListView.cs index 65975a3f..0af5bfa5 100644 --- a/Ink Canvas/MainWindow_cs/MW_PageListView.cs +++ b/Ink Canvas/MainWindow_cs/MW_PageListView.cs @@ -265,5 +265,14 @@ namespace Ink_Canvas } } + /// + /// 预览列表中某页的“删除”按钮点击:删除该页,并阻止事件继续冒泡(避免触发选中/切页)。 + /// + private void WhiteBoardPageListItem_DeleteClick(object sender, RoutedEventArgs e) + { + e.Handled = true; + if (sender is FrameworkElement fe && fe.DataContext is PageListViewItem item) + DeleteWhiteBoardPageByIndex(item.Index); + } } } \ No newline at end of file