Files
AohDrllTools/MainWindow.xaml
Mr.Xia 837cf6fb12 新增钻带刀序多种排序功能及相关文档
本次提交主要内容如下:

- 新增“排序功能”菜单,支持重排刀序、生成/应用排序种子、按参考钻带重排等多种排序方式,提升刀具顺序管理灵活性。
- 支持用户选择参考钻带文件或排序种子文件,自动重排当前刀具顺序,并提供详细的匹配校验、警告提示和重排前后对比确认。
- 新增生成通用排序种子文件(General_sort.txt)功能,便于批量产品排序。
- 优化界面布局,提升信息展示美观性和空间利用率。
- 增加异常处理和详细注释,提升健壮性和可维护性。
- 新增多个文档,详细说明“使用指定钻带的刀序”功能的实现、使用方法、演示流程及开发过程中的问题修复,便于开发和用户理解。
- 新增两个排序种子文件示例(General_sort.txt、s40024079g0-a2-cs-jp-sort.txt),用于刀具顺序自动重排。
- 其他无实际代码变更的文件未影响功能。

本次改动极大提升了钻带刀具顺序管理的自动化、灵活性和用户体验,适用于多样化的生产场景。
2025-12-28 13:16:41 +08:00

254 lines
11 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<Window
x:Class="DrillTools.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DrillTools"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="钻带处理工具(支持拖入钻带文件)"
Width="1000"
Height="550"
AllowDrop="True"
mc:Ignorable="d">
<Window.DataContext>
<local:MainWindowViewModel />
</Window.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- 工具栏 -->
<ToolBar Grid.Row="0">
<!--<Button
Name="LoadSampleDataButton"
Click="LoadSampleDataButton_Click"
Content="加载示例数据" />
<Separator />-->
<Button
Name="LoadDrillTapeButton"
Click="LoadDrillTapeButton_Click"
Content="加载钻带文件" />
<Button
Name="TestReferenceDrillTapeButton"
Click="TestReferenceDrillTapeButton_Click"
Content="测试参考钻带功能" />
<Menu>
<MenuItem Header="排序功能">
<MenuItem
Name="ReorderToolsMenuItem"
Click="ReorderToolsButton_Click"
Header="重排刀序" />
<MenuItem
Name="GenerateSortSeedMenuItem"
Click="GenerateSortSeedButton_Click"
Header="生成排序种子"
IsEnabled="{Binding HasOriginalFile}" />
<Separator />
<MenuItem
Name="UseReferenceDrillTapeMenuItem"
Click="UseReferenceDrillTapeButton_Click"
Header="使用指定钻带的刀序" />
<MenuItem
Name="UseSortSeedMenuItem"
Click="UseSortSeedButton_Click"
Header="使用指定种子的刀序" />
</MenuItem>
</Menu>
<Button
Name="ApplyOrderButton"
Click="ApplyOrderButton_Click"
Content="应用并保存"
IsEnabled="{Binding HasOriginalFile}" />
<Button
Name="ToggleTopmostButton"
Click="ToggleTopmostButton_Click"
Content="{Binding TopmostButtonText}" />
</ToolBar>
<!-- 主内容区域 -->
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="400" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="100" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!-- 刀具列表 -->
<GroupBox
Grid.RowSpan="2"
Grid.Column="0"
Header="刀具列表(可拖动排序)">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ListView
Name="ToolsListView"
Grid.Row="0"
AllowDrop="True"
ItemsSource="{Binding Tools}"
MouseDoubleClick="ToolsListView_MouseDoubleClick"
SelectedItem="{Binding SelectedTool}">
<ListView.View>
<GridView>
<GridViewColumn
Width="80"
DisplayMemberBinding="{Binding ToolNumber, StringFormat=T{0:D2}}"
Header="刀具编号" />
<GridViewColumn
Width="80"
DisplayMemberBinding="{Binding Diameter, StringFormat=F3}"
Header="孔径(mm)" />
<GridViewColumn
Width="70"
DisplayMemberBinding="{Binding ToolTypeDisplay}"
Header="类型" />
<GridViewColumn
Width="90"
DisplayMemberBinding="{Binding ToolSuffixTypeDisplay}"
Header="尾号类型" />
</GridView>
</ListView.View>
<ListView.ItemContainerStyle>
<Style BasedOn="{StaticResource {x:Type ListViewItem}}" TargetType="ListViewItem">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#E0E0E0" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#0078D4" />
<Setter Property="Foreground" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
</ListView>
<!-- 插入位置指示器 -->
<Rectangle
x:Name="InsertionIndicator"
Grid.Row="0"
Height="2"
Margin="0,0,0,0"
HorizontalAlignment="Stretch"
Fill="#FF0078D4"
IsHitTestVisible="False"
Visibility="Collapsed" />
<!-- 上移/下移按钮 -->
<StackPanel
Grid.Row="1"
Margin="0,5,0,5"
HorizontalAlignment="Center"
Orientation="Horizontal">
<Button
Name="MoveUpButton"
Width="80"
Height="35"
Margin="5,0"
Click="MoveUpButton_Click"
Content="↑ 上移"
IsEnabled="{Binding CanMoveUp}" />
<Button
Name="MoveDownButton"
Width="80"
Height="35"
Margin="5,0"
Click="MoveDownButton_Click"
Content="↓ 下移"
IsEnabled="{Binding CanMoveDown}" />
</StackPanel>
</Grid>
</GroupBox>
<!-- 基础信息显示 -->
<GroupBox
Grid.Row="0"
Grid.Column="1"
Header="基础信息">
<Grid Margin="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- 文件名单独一行 -->
<StackPanel Grid.Column="0" Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="文件名:" />
<TextBlock
Margin="0,0,0,5"
VerticalAlignment="Center"
FontWeight="Bold"
Text="{Binding FileNameWithoutExtension}" />
</StackPanel>
<!-- 三个最小直径信息在同一行 -->
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="最小钻咀:" />
<TextBlock
Margin="5,0,0,0"
VerticalAlignment="Center"
Text="{Binding MinDrillDiameter, StringFormat=F3}" />
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="最小槽刀:" />
<TextBlock
Margin="5,0,0,0"
VerticalAlignment="Center"
Text="{Binding MinSlotDiameter, StringFormat=F3}" />
</StackPanel>
<StackPanel Grid.Column="2" Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="最小EA刀" />
<TextBlock
Margin="5,0,0,0"
VerticalAlignment="Center"
Text="{Binding MinEADiameter, StringFormat=F3}" />
</StackPanel>
</Grid>
</Grid>
</GroupBox>
<!-- 钻带内容显示 -->
<GroupBox
Grid.Row="1"
Grid.Column="1"
Header="钻带内容">
<TextBox
Name="DrillTapeTextBox"
HorizontalScrollBarVisibility="Auto"
IsReadOnly="True"
Style="{StaticResource CodeTextBoxStyle}"
Text="{Binding DrillTapeContent}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</GroupBox>
</Grid>
<!-- 状态栏 -->
<StatusBar Grid.Row="2">
<StatusBarItem>
<TextBlock Text="就绪" />
</StatusBarItem>
</StatusBar>
</Grid>
</Window>