删除了一些测试方法
新增了刀序重排确认窗口 优化了应用刀序到钻带后的一些操作
This commit is contained in:
151
ToolReorderConfirmationWindow.xaml.cs
Normal file
151
ToolReorderConfirmationWindow.xaml.cs
Normal file
@@ -0,0 +1,151 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace DrillTools
|
||||
{
|
||||
/// <summary>
|
||||
/// ToolReorderConfirmationWindow.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class ToolReorderConfirmationWindow : Window
|
||||
{
|
||||
/// <summary>
|
||||
/// 是否确认重排
|
||||
/// </summary>
|
||||
public bool IsConfirmed { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
public ToolReorderConfirmationWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
DataContext = new ToolReorderConfirmationViewModel();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 使用原始和重排后的刀具列表初始化窗口
|
||||
/// </summary>
|
||||
/// <param name="originalTools">原始刀具列表</param>
|
||||
/// <param name="reorderedTools">重排后刀具列表</param>
|
||||
public ToolReorderConfirmationWindow(IEnumerable<ToolItem> originalTools, IEnumerable<ToolItem> reorderedTools) : this()
|
||||
{
|
||||
if (DataContext is ToolReorderConfirmationViewModel viewModel)
|
||||
{
|
||||
viewModel.LoadTools(originalTools, reorderedTools);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 确认按钮点击事件
|
||||
/// </summary>
|
||||
private void ConfirmButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
IsConfirmed = true;
|
||||
Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取消按钮点击事件
|
||||
/// </summary>
|
||||
private void CancelButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
IsConfirmed = false;
|
||||
Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 原始刀序列表滚动事件处理
|
||||
/// </summary>
|
||||
private void OriginalToolsListView_ScrollChanged(object sender, ScrollChangedEventArgs e)
|
||||
{
|
||||
if (sender is System.Windows.Controls.ListView listView && e.VerticalChange != 0)
|
||||
{
|
||||
// 获取原始列表的滚动位置
|
||||
var scrollViewer = GetScrollViewer(listView);
|
||||
if (scrollViewer != null)
|
||||
{
|
||||
// 同步到重排后列表
|
||||
var reorderedScrollViewer = GetScrollViewer(ReorderedToolsListView);
|
||||
if (reorderedScrollViewer != null)
|
||||
{
|
||||
reorderedScrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重排后刀序列表滚动事件处理
|
||||
/// </summary>
|
||||
private void ReorderedToolsListView_ScrollChanged(object sender, ScrollChangedEventArgs e)
|
||||
{
|
||||
if (sender is System.Windows.Controls.ListView listView && e.VerticalChange != 0)
|
||||
{
|
||||
// 获取重排后列表的滚动位置
|
||||
var scrollViewer = GetScrollViewer(listView);
|
||||
if (scrollViewer != null)
|
||||
{
|
||||
// 同步到原始列表
|
||||
var originalScrollViewer = GetScrollViewer(OriginalToolsListView);
|
||||
if (originalScrollViewer != null)
|
||||
{
|
||||
originalScrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取ListView中的ScrollViewer控件
|
||||
/// </summary>
|
||||
/// <param name="listView">ListView控件</param>
|
||||
/// <returns>ScrollViewer控件</returns>
|
||||
private ScrollViewer GetScrollViewer(System.Windows.Controls.ListView listView)
|
||||
{
|
||||
if (listView == null)
|
||||
return null;
|
||||
|
||||
// 使用VisualTreeHelper查找ScrollViewer
|
||||
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(listView); i++)
|
||||
{
|
||||
var child = VisualTreeHelper.GetChild(listView, i);
|
||||
if (child is ScrollViewer scrollViewer)
|
||||
{
|
||||
return scrollViewer;
|
||||
}
|
||||
// 递归查找子控件
|
||||
var result = GetScrollViewerFromChild(child);
|
||||
if (result != null)
|
||||
return result;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从子控件中递归查找ScrollViewer
|
||||
/// </summary>
|
||||
/// <param name="parent">父控件</param>
|
||||
/// <returns>ScrollViewer控件</returns>
|
||||
private ScrollViewer GetScrollViewerFromChild(DependencyObject parent)
|
||||
{
|
||||
if (parent == null)
|
||||
return null;
|
||||
|
||||
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
|
||||
{
|
||||
var child = VisualTreeHelper.GetChild(parent, i);
|
||||
if (child is ScrollViewer scrollViewer)
|
||||
{
|
||||
return scrollViewer;
|
||||
}
|
||||
// 递归查找
|
||||
var result = GetScrollViewerFromChild(child);
|
||||
if (result != null)
|
||||
return result;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user