Files
OrpaonVision/OrpaonVision.ConfigApp/MainWindow.xaml
2026-04-06 22:04:05 +08:00

430 lines
30 KiB
XML
Raw Permalink 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="OrpaonVision.ConfigApp.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="clr-namespace:OrpaonVision.ConfigApp.Infrastructure.Controls"
mc:Ignorable="d"
Title="MainWindow" Height="700" Width="980" MinWidth="820" MinHeight="620">
<Grid Margin="16">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal" Margin="0,0,0,12">
<TextBlock FontSize="20" FontWeight="SemiBold" Text="CVAT 联调 + 规则配置M3 最小面板)" VerticalAlignment="Center" />
<Button Content="训练任务管理" Margin="20,0,0,0" Padding="12,6" VerticalAlignment="Center"
Click="OpenTrainingTaskManagement_Click"
controls:PermissionControl.PermissionCode="TRAINING_VIEW"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button Content="产品会话管理" Margin="10,0,0,0" Padding="12,6" VerticalAlignment="Center"
Click="OpenProductionSessionManagement_Click"
controls:PermissionControl.PermissionCode="SESSION_VIEW"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
</StackPanel>
<Border
Grid.Row="1"
Padding="14"
BorderBrush="#DDDDDD"
BorderThickness="1"
CornerRadius="6">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="170" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Margin="0,0,8,10" VerticalAlignment="Center" Text="本地项目 ID" />
<TextBox Grid.Row="0" Grid.Column="1" Margin="0,0,0,10" MinHeight="30" VerticalContentAlignment="Center" Text="{Binding ProjectIdText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="1" Grid.Column="0" Margin="0,0,8,10" VerticalAlignment="Center" Text="本地标注任务 ID" />
<TextBox Grid.Row="1" Grid.Column="1" Margin="0,0,0,10" MinHeight="30" VerticalContentAlignment="Center" Text="{Binding AnnotationTaskIdText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,8,10" VerticalAlignment="Center" Text="CVAT 服务地址" />
<TextBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,10" MinHeight="30" VerticalContentAlignment="Center" Text="{Binding CvatEndpointText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="3" Grid.Column="0" Margin="0,0,8,10" VerticalAlignment="Center" Text="CVAT 项目 ID" />
<TextBox Grid.Row="3" Grid.Column="1" Margin="0,0,0,10" MinHeight="30" VerticalContentAlignment="Center" Text="{Binding CvatProjectIdText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="4" Grid.Column="0" Margin="0,0,8,10" VerticalAlignment="Center" Text="CVAT 任务 ID" />
<TextBox Grid.Row="4" Grid.Column="1" Margin="0,0,0,10" MinHeight="30" VerticalContentAlignment="Center" Text="{Binding CvatTaskIdText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="5" Grid.Column="0" Margin="0,0,8,10" VerticalAlignment="Center" Text="请求人" />
<TextBox Grid.Row="5" Grid.Column="1" Margin="0,0,0,10" MinHeight="30" VerticalContentAlignment="Center" Text="{Binding RequestedByText, UpdateSourceTrigger=PropertyChanged}" />
<StackPanel Grid.Row="6" Grid.Column="1" Orientation="Horizontal" Margin="0,4,0,10">
<Button
x:Name="CheckStatusButton"
Width="140"
Height="32"
Margin="0,0,10,0"
Content="检查连通状态"
IsEnabled="{Binding IsIdle}"
Click="OnCheckStatusClicked"
controls:PermissionControl.PermissionCode="CVAT_VIEW_STATUS"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button
x:Name="QueryTaskDetailButton"
Width="140"
Height="32"
Margin="0,0,10,0"
Content="查询任务详情"
IsEnabled="{Binding IsIdle}"
Click="OnQueryTaskDetailClicked"
controls:PermissionControl.PermissionCode="CVAT_VIEW_TASK_DETAIL"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button
x:Name="SyncButton"
Width="120"
Height="32"
Content="发起同步"
IsEnabled="{Binding IsIdle}"
Click="OnSyncClicked"
controls:PermissionControl.PermissionCode="CVAT_SYNC_PROJECT"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
</StackPanel>
<TextBlock Grid.Row="7" Grid.Column="0" Margin="0,0,8,6" VerticalAlignment="Top" Text="状态输出" />
<TextBlock Grid.Row="7" Grid.Column="1" Margin="0,0,0,6" Foreground="{Binding StatusBrush}" Text="{Binding StatusText}" TextWrapping="Wrap" />
<TextBlock Grid.Row="8" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Top" Text="处理建议" />
<TextBlock Grid.Row="8" Grid.Column="1" Margin="0,0,0,8" Foreground="{Binding FriendlyHintBrush}" Text="{Binding FriendlyHintText}" TextWrapping="Wrap" />
<TextBlock Grid.Row="9" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Top" Text="任务详情" />
<Border Grid.Row="9" Grid.Column="1" Margin="0,0,0,8" Padding="8" BorderBrush="#E5E5E5" BorderThickness="1" CornerRadius="4">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="110" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="110" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Margin="0,0,6,6" Text="TaskId" />
<TextBlock Grid.Row="0" Grid.Column="1" Margin="0,0,10,6" Text="{Binding DetailTaskIdText}" />
<TextBlock Grid.Row="0" Grid.Column="2" Margin="0,0,6,6" Text="ProjectId" />
<TextBlock Grid.Row="0" Grid.Column="3" Margin="0,0,0,6" Text="{Binding DetailProjectIdText}" />
<TextBlock Grid.Row="1" Grid.Column="0" Margin="0,0,6,6" Text="TaskName" />
<TextBlock Grid.Row="1" Grid.Column="1" Margin="0,0,10,6" Text="{Binding DetailTaskNameText}" TextWrapping="Wrap" />
<TextBlock Grid.Row="1" Grid.Column="2" Margin="0,0,6,6" Text="TaskStatus" />
<TextBlock Grid.Row="1" Grid.Column="3" Margin="0,0,0,6" Text="{Binding DetailTaskStatusText}" />
<TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,6,0" Text="ItemCount" />
<TextBlock Grid.Row="2" Grid.Column="1" Margin="0,0,10,0" Text="{Binding DetailItemCountText}" />
<TextBlock Grid.Row="2" Grid.Column="2" Margin="0,0,6,0" Text="UpdatedAtUtc" />
<TextBlock Grid.Row="2" Grid.Column="3" Margin="0,0,0,0" Text="{Binding DetailUpdatedAtText}" />
</Grid>
</Border>
<TextBlock Grid.Row="10" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Top" Text="规则发布" />
<Border Grid.Row="10" Grid.Column="1" Margin="0,0,0,8" Padding="8" BorderBrush="#E5E5E5" BorderThickness="1" CornerRadius="4">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="110" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="110" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Margin="0,0,6,8" VerticalAlignment="Center" Text="机种编码" />
<TextBox Grid.Row="0" Grid.Column="1" Margin="0,0,10,8" MinHeight="30" VerticalContentAlignment="Center" Text="{Binding RuleProductTypeCodeText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="0" Grid.Column="2" Margin="0,0,6,8" VerticalAlignment="Center" Text="机种名称" />
<TextBox Grid.Row="0" Grid.Column="3" Margin="0,0,0,8" MinHeight="30" VerticalContentAlignment="Center" Text="{Binding RuleProductTypeNameText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="1" Grid.Column="0" Margin="0,0,6,8" VerticalAlignment="Center" Text="层配置" />
<DataGrid Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Margin="0,0,0,6" Height="110"
AutoGenerateColumns="False"
CanUserAddRows="False"
HeadersVisibility="Column"
ItemsSource="{Binding RuleLayers}"
SelectedItem="{Binding SelectedRuleLayer, Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Header="层号" Binding="{Binding LayerNoText, UpdateSourceTrigger=PropertyChanged}" Width="120" />
<DataGridTextColumn Header="层名称" Binding="{Binding LayerName, UpdateSourceTrigger=PropertyChanged}" Width="*" />
</DataGrid.Columns>
</DataGrid>
<TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,6,8" VerticalAlignment="Center" Text="部件配置" />
<DataGrid Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" Margin="0,0,0,6" Height="120"
AutoGenerateColumns="False"
CanUserAddRows="False"
HeadersVisibility="Column"
ItemsSource="{Binding RuleParts}"
SelectedItem="{Binding SelectedRulePart, Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Header="编码" Binding="{Binding PartCode, UpdateSourceTrigger=PropertyChanged}" Width="150" />
<DataGridTextColumn Header="名称" Binding="{Binding PartName, UpdateSourceTrigger=PropertyChanged}" Width="*" />
<DataGridTextColumn Header="层号" Binding="{Binding LayerNoText, UpdateSourceTrigger=PropertyChanged}" Width="120" />
</DataGrid.Columns>
</DataGrid>
<TextBlock Grid.Row="3" Grid.Column="0" Margin="0,0,6,8" VerticalAlignment="Center" Text="ROI 配置" />
<DataGrid Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="3" Margin="0,0,0,6" Height="130"
AutoGenerateColumns="False"
CanUserAddRows="False"
HeadersVisibility="Column"
ItemsSource="{Binding RuleRois}"
SelectedItem="{Binding SelectedRuleRoi, Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Header="编码" Binding="{Binding RoiCode, UpdateSourceTrigger=PropertyChanged}" Width="130" />
<DataGridTextColumn Header="部件编码" Binding="{Binding PartCode, UpdateSourceTrigger=PropertyChanged}" Width="130" />
<DataGridTextColumn Header="X" Binding="{Binding XText, UpdateSourceTrigger=PropertyChanged}" Width="70" />
<DataGridTextColumn Header="Y" Binding="{Binding YText, UpdateSourceTrigger=PropertyChanged}" Width="70" />
<DataGridTextColumn Header="W" Binding="{Binding WidthText, UpdateSourceTrigger=PropertyChanged}" Width="70" />
<DataGridTextColumn Header="H" Binding="{Binding HeightText, UpdateSourceTrigger=PropertyChanged}" Width="70" />
</DataGrid.Columns>
</DataGrid>
<TextBlock Grid.Row="4" Grid.Column="0" Margin="0,0,6,8" VerticalAlignment="Center" Text="规则配置" />
<DataGrid Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="3" Margin="0,0,0,6" Height="140"
AutoGenerateColumns="False"
CanUserAddRows="False"
HeadersVisibility="Column"
ItemsSource="{Binding RuleItems}"
SelectedItem="{Binding SelectedRuleItem, Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Header="编码" Binding="{Binding RuleCode, UpdateSourceTrigger=PropertyChanged}" Width="130" />
<DataGridTextColumn Header="名称" Binding="{Binding RuleName, UpdateSourceTrigger=PropertyChanged}" Width="150" />
<DataGridTextColumn Header="类型" Binding="{Binding RuleType, UpdateSourceTrigger=PropertyChanged}" Width="150" />
<DataGridTextColumn Header="参数(JSON)" Binding="{Binding ParametersJson, UpdateSourceTrigger=PropertyChanged}" Width="*" />
<DataGridCheckBoxColumn Header="启用" Binding="{Binding Enabled, UpdateSourceTrigger=PropertyChanged}" Width="70" />
</DataGrid.Columns>
</DataGrid>
<StackPanel Grid.Row="5" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Horizontal" Margin="0,0,0,8">
<Button Width="72" Height="28" Margin="0,0,8,0" Content="+ 层" Click="OnAddRuleLayerClicked"
controls:PermissionControl.PermissionCode="RULE_CREATE_DRAFT"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button Width="88" Height="28" Margin="0,0,16,0" Content="- 选中层" Click="OnRemoveRuleLayerClicked"
controls:PermissionControl.PermissionCode="RULE_CREATE_DRAFT"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button Width="72" Height="28" Margin="0,0,8,0" Content="+ 部件" Click="OnAddRulePartClicked"
controls:PermissionControl.PermissionCode="RULE_CREATE_DRAFT"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button Width="94" Height="28" Margin="0,0,16,0" Content="- 选中部件" Click="OnRemoveRulePartClicked"
controls:PermissionControl.PermissionCode="RULE_CREATE_DRAFT"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button Width="72" Height="28" Margin="0,0,8,0" Content="+ ROI" Click="OnAddRuleRoiClicked"
controls:PermissionControl.PermissionCode="RULE_CREATE_DRAFT"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button Width="88" Height="28" Margin="0,0,16,0" Content="- 选中ROI" Click="OnRemoveRuleRoiClicked"
controls:PermissionControl.PermissionCode="RULE_CREATE_DRAFT"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button Width="72" Height="28" Margin="0,0,8,0" Content="+ 规则" Click="OnAddRuleItemClicked"
controls:PermissionControl.PermissionCode="RULE_CREATE_DRAFT"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button Width="88" Height="28" Content="- 选中规则" Click="OnRemoveRuleItemClicked"
controls:PermissionControl.PermissionCode="RULE_CREATE_DRAFT"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
</StackPanel>
<StackPanel Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Horizontal" Margin="0,8,0,8">
<Button
Width="150"
Height="30"
Margin="0,0,10,0"
Content="保存规则草稿"
IsEnabled="{Binding IsIdle}"
Click="OnSaveRuleDraftClicked"
controls:PermissionControl.PermissionCode="RULE_CREATE_DRAFT"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button
Width="150"
Height="30"
Margin="0,0,10,0"
Content="发布规则版本"
IsEnabled="{Binding IsIdle}"
Click="OnPublishRuleVersionClicked"
controls:PermissionControl.PermissionCode="RULE_PUBLISH"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button
Width="100"
Height="30"
Margin="0,0,10,0"
Content="对比版本"
IsEnabled="{Binding IsIdle}"
Click="OnCompareVersionsClicked"
controls:PermissionControl.PermissionCode="RULE_VIEW"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button
Width="100"
Height="30"
Margin="0,0,10,0"
Content="回滚版本"
IsEnabled="{Binding IsIdle}"
Click="OnRollbackVersionClicked"
controls:PermissionControl.PermissionCode="RULE_ROLLBACK"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button
Width="110"
Height="30"
Margin="0,0,10,0"
Content="查询审计"
IsEnabled="{Binding IsIdle}"
Click="OnQueryRuleAuditClicked"
controls:PermissionControl.PermissionCode="RULE_VIEW_AUDIT"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button
Width="110"
Height="30"
Margin="0,0,10,0"
Content="停用版本"
IsEnabled="{Binding IsIdle}"
Click="OnDisableRuleVersionClicked"
controls:PermissionControl.PermissionCode="RULE_DISABLE"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button
Width="110"
Height="30"
Margin="0,0,10,0"
Content="版本详情"
IsEnabled="{Binding IsIdle}"
Click="OnQueryRuleVersionDetailClicked"
controls:PermissionControl.PermissionCode="RULE_VIEW"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
<Button
Width="120"
Height="30"
Content="分页查询版本"
IsEnabled="{Binding IsIdle}"
Click="OnQueryRuleVersionPagedClicked"
controls:PermissionControl.PermissionCode="RULE_VIEW"
controls:PermissionControl.CurrentUserId="{Binding CurrentUserId}" />
</StackPanel>
<TextBlock Grid.Row="7" Grid.Column="0" Margin="0,0,6,0" Text="最新版本" />
<TextBlock Grid.Row="7" Grid.Column="1" Margin="0,0,10,0" Text="{Binding PublishedRuleVersionText}" />
<TextBlock Grid.Row="7" Grid.Column="2" Margin="0,0,6,0" Text="发布时间(UTC)" />
<TextBlock Grid.Row="7" Grid.Column="3" Margin="0,0,0,0" Text="{Binding PublishedRuleAtText}" />
<TextBlock Grid.Row="8" Grid.Column="0" Margin="0,8,0,6" Text="源版本号" />
<TextBox Grid.Row="8" Grid.Column="1" Margin="0,8,0,6" MinHeight="26" VerticalContentAlignment="Center" Text="{Binding CompareSourceVersionText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="8" Grid.Column="2" Margin="0,8,0,6" Text="目标版本号" />
<TextBox Grid.Row="8" Grid.Column="3" Margin="0,8,0,6" MinHeight="26" VerticalContentAlignment="Center" Text="{Binding CompareTargetVersionText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="9" Grid.Column="0" Margin="0,0,0,6" Text="回滚到版本" />
<TextBox Grid.Row="9" Grid.Column="1" Margin="0,0,10,6" MinHeight="26" VerticalContentAlignment="Center" Text="{Binding RollbackTargetVersionText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="9" Grid.Column="2" Grid.ColumnSpan="2" Margin="0,0,0,6" VerticalAlignment="Center" Foreground="#666666" Text="请填写要回滚到的目标版本号" />
<TextBlock Grid.Row="10" Grid.Column="0" Margin="0,0,0,6" Text="停用版本号" />
<TextBox Grid.Row="10" Grid.Column="1" Margin="0,0,10,6" MinHeight="26" VerticalContentAlignment="Center" Text="{Binding DisableVersionNoText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="10" Grid.Column="2" Margin="0,0,0,6" Text="详情版本号" />
<TextBox Grid.Row="10" Grid.Column="3" Margin="0,0,0,6" MinHeight="26" VerticalContentAlignment="Center" Text="{Binding VersionDetailNoText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="11" Grid.Column="0" Margin="0,0,0,6" Text="分页参数" />
<StackPanel Grid.Row="11" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Horizontal" Margin="0,0,0,6">
<TextBlock Margin="0,0,6,0" VerticalAlignment="Center" Text="页码" />
<TextBox Width="80" Margin="0,0,16,0" MinHeight="26" VerticalContentAlignment="Center" Text="{Binding VersionPageIndexText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Margin="0,0,6,0" VerticalAlignment="Center" Text="每页" />
<TextBox Width="80" MinHeight="26" VerticalContentAlignment="Center" Text="{Binding VersionPageSizeText, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
<DataGrid Grid.Row="12" Grid.Column="1" Grid.ColumnSpan="3" Margin="0,0,0,6" Height="140"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
IsReadOnly="True"
HeadersVisibility="Column"
ItemsSource="{Binding RuleVersionRows}">
<DataGrid.Columns>
<DataGridTextColumn Header="版本号" Binding="{Binding VersionNo}" Width="150" />
<DataGridTextColumn Header="发布时间(UTC)" Binding="{Binding PublishedAtUtcText}" Width="190" />
<DataGridTextColumn Header="发布人" Binding="{Binding PublishedBy}" Width="120" />
<DataGridTextColumn Header="已停用" Binding="{Binding IsDisabledText}" Width="80" />
<DataGridTextColumn Header="停用时间(UTC)" Binding="{Binding DisabledAtUtcText}" Width="190" />
<DataGridTextColumn Header="停用人" Binding="{Binding DisabledBy}" Width="*" />
</DataGrid.Columns>
</DataGrid>
<TextBlock Grid.Row="13" Grid.Column="1" Grid.ColumnSpan="3" Margin="0,0,0,0" Foreground="#666666" TextWrapping="Wrap"
Text="提示:编辑列表中的值后可直接保存草稿;删除按钮仅对当前选中行生效;版本对比和回滚需要输入版本号。" />
</Grid>
</Border>
<TextBlock Grid.Row="11" Grid.Column="0" Margin="0,0,8,0" VerticalAlignment="Top" Text="审计记录" />
<Grid Grid.Row="11" Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="2*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<DataGrid
Grid.Row="0"
MinHeight="120"
Margin="0,0,0,8"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
IsReadOnly="True"
HeadersVisibility="Column"
ItemsSource="{Binding RuleAuditRows}">
<DataGrid.Columns>
<DataGridTextColumn Header="时间(UTC)" Binding="{Binding ActionAtUtcText}" Width="180" />
<DataGridTextColumn Header="动作" Binding="{Binding ActionType}" Width="80" />
<DataGridTextColumn Header="版本" Binding="{Binding VersionNo}" Width="120" />
<DataGridTextColumn Header="源版本" Binding="{Binding SourceVersionNo}" Width="120" />
<DataGridTextColumn Header="目标版本" Binding="{Binding TargetVersionNo}" Width="120" />
<DataGridTextColumn Header="操作人" Binding="{Binding OperatorName}" Width="*" />
</DataGrid.Columns>
</DataGrid>
<TextBlock Grid.Row="1" Margin="0,0,0,6" Foreground="#666666" Text="详细日志" />
<TextBox
Grid.Row="2"
MinHeight="90"
VerticalScrollBarVisibility="Auto"
TextWrapping="Wrap"
AcceptsReturn="True"
Text="{Binding OutputText}"
IsReadOnly="True" />
</Grid>
</Grid>
</Border>
<TextBlock
Grid.Row="2"
Margin="0,10,0,0"
Foreground="#666666"
Text="说明:当前页面包含 CVAT 联调与 M3 规则草稿/发布最小流程,不包含批量编排与审批策略。" />
</Grid>
</Window>