删除了一些测试方法

新增了刀序重排确认窗口
优化了应用刀序到钻带后的一些操作
This commit is contained in:
2025-12-13 12:30:36 +08:00
parent b866365968
commit 3cdf68651f
8 changed files with 595 additions and 854 deletions

View File

@@ -0,0 +1,201 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Windows.Media;
using Brush = System.Windows.Media.Brush;
namespace DrillTools
{
/// <summary>
/// 刀序重排确认窗口视图模型
/// </summary>
public class ToolReorderConfirmationViewModel : INotifyPropertyChanged
{
private ObservableCollection<ToolOrderItem> _originalTools = new();
private ObservableCollection<ToolOrderItem> _reorderedTools = new();
/// <summary>
/// 原始刀具列表
/// </summary>
public ObservableCollection<ToolOrderItem> OriginalTools
{
get => _originalTools;
set => SetProperty(ref _originalTools, value);
}
/// <summary>
/// 重排后刀具列表
/// </summary>
public ObservableCollection<ToolOrderItem> ReorderedTools
{
get => _reorderedTools;
set => SetProperty(ref _reorderedTools, value);
}
/// <summary>
/// 构造函数
/// </summary>
public ToolReorderConfirmationViewModel()
{
}
/// <summary>
/// 使用原始和重排后的刀具列表初始化
/// </summary>
/// <param name="originalTools">原始刀具列表</param>
/// <param name="reorderedTools">重排后刀具列表</param>
public ToolReorderConfirmationViewModel(IEnumerable<ToolItem> originalTools, IEnumerable<ToolItem> reorderedTools) : this()
{
LoadTools(originalTools, reorderedTools);
}
/// <summary>
/// 加载刀具数据
/// </summary>
/// <param name="originalTools">原始刀具列表</param>
/// <param name="reorderedTools">重排后刀具列表</param>
public void LoadTools(IEnumerable<ToolItem> originalTools, IEnumerable<ToolItem> reorderedTools)
{
OriginalTools.Clear();
ReorderedTools.Clear();
// 创建原始刀具列表项
int order = 1;
foreach (var tool in originalTools)
{
OriginalTools.Add(new ToolOrderItem
{
Order = order++,
ToolNumber = tool.ToolNumber,
Diameter = tool.Diameter,
ToolTypeDisplay = tool.ToolTypeDisplay,
BackgroundColor = System.Windows.Media.Brushes.White
});
}
// 创建重排后刀具列表项,并比较位置变化
order = 1;
var originalToolList = originalTools.ToList();
var reorderedToolList = reorderedTools.ToList();
foreach (var tool in reorderedToolList)
{
// 查找该刀具在原始列表中的位置
int originalIndex = originalToolList.FindIndex(t => t.Diameter == tool.Diameter && t.ToolType == tool.ToolType);
int newIndex = reorderedToolList.IndexOf(tool);
// 判断位置是否发生变化
bool positionChanged = originalIndex != newIndex;
ReorderedTools.Add(new ToolOrderItem
{
Order = order++,
ToolNumber = tool.ToolNumber,
Diameter = tool.Diameter,
ToolTypeDisplay = tool.ToolTypeDisplay,
BackgroundColor = positionChanged ? new SolidColorBrush(System.Windows.Media.Color.FromRgb(255, 235, 238)) : new SolidColorBrush(System.Windows.Media.Color.FromRgb(232, 245, 233))
});
// 同时更新原始列表中对应项的背景色
if (originalIndex >= 0 && originalIndex < OriginalTools.Count)
{
OriginalTools[originalIndex].BackgroundColor = positionChanged ? new SolidColorBrush(System.Windows.Media.Color.FromRgb(255, 235, 238)) : new SolidColorBrush(System.Windows.Media.Color.FromRgb(232, 245, 233));
}
}
}
public event PropertyChangedEventHandler? PropertyChanged;
protected bool SetProperty<T>(ref T field, T value, [CallerMemberName] string? propertyName = null)
{
if (EqualityComparer<T>.Default.Equals(field, value))
return false;
field = value;
OnPropertyChanged(propertyName);
return true;
}
protected virtual void OnPropertyChanged([CallerMemberName] string? propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
/// <summary>
/// 刀具排序项
/// </summary>
public class ToolOrderItem : INotifyPropertyChanged
{
private int _order;
private int _toolNumber;
private double _diameter;
private string _toolTypeDisplay = string.Empty;
private Brush _backgroundColor = System.Windows.Media.Brushes.White;
/// <summary>
/// 序号
/// </summary>
public int Order
{
get => _order;
set => SetProperty(ref _order, value);
}
/// <summary>
/// 刀具编号
/// </summary>
public int ToolNumber
{
get => _toolNumber;
set => SetProperty(ref _toolNumber, value);
}
/// <summary>
/// 孔径
/// </summary>
public double Diameter
{
get => _diameter;
set => SetProperty(ref _diameter, value);
}
/// <summary>
/// 刀具类型显示文本
/// </summary>
public string ToolTypeDisplay
{
get => _toolTypeDisplay;
set => SetProperty(ref _toolTypeDisplay, value);
}
/// <summary>
/// 背景色
/// </summary>
public Brush BackgroundColor
{
get => _backgroundColor;
set => SetProperty(ref _backgroundColor, value);
}
public event PropertyChangedEventHandler? PropertyChanged;
protected bool SetProperty<T>(ref T field, T value, [CallerMemberName] string? propertyName = null)
{
if (EqualityComparer<T>.Default.Equals(field, value))
return false;
field = value;
OnPropertyChanged(propertyName);
return true;
}
protected virtual void OnPropertyChanged([CallerMemberName] string? propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}