Files
ASTM-D7896-19TransientHot-W…/Views/D7896View.xaml
2026-04-18 19:00:34 +08:00

257 lines
17 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.
<UserControl x:Class="ASTM_D7896_Tester.Views.D7896View"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="768" d:DesignWidth="1024">
<UserControl.Resources>
<!-- 全局字体 -->
<Style TargetType="TextBlock">
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontSize" Value="13"/>
</Style>
<Style TargetType="TextBox">
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="BorderBrush" Value="#CCCCCC"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Padding" Value="4,2"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
<Style TargetType="Button">
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#F0F0F0" Offset="0"/>
<GradientStop Color="#E0E0E0" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="#ADADAD"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Padding" Value="12,6"/>
<Setter Property="Cursor" Value="Hand"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#E6F2FF" Offset="0"/>
<GradientStop Color="#D0E4F7" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="#7CA4C7"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#C0D9F0" Offset="0"/>
<GradientStop Color="#A8C4E0" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
<!-- 卡片阴影效果 -->
<DropShadowEffect x:Key="CardShadow" BlurRadius="8" ShadowDepth="2" Opacity="0.15" Color="Gray"/>
<!-- 主按钮绿色渐变(修复:将资源定义在正确的位置) -->
<LinearGradientBrush x:Key="PrimaryButtonBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#4CAF50" Offset="0"/>
<GradientStop Color="#388E3C" Offset="1"/>
</LinearGradientBrush>
<!-- 数据表格样式 -->
<Style TargetType="DataGrid">
<Setter Property="FontFamily" Value="Segoe UI"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="RowHeight" Value="28"/>
<Setter Property="HeadersVisibility" Value="Column"/>
<Setter Property="GridLinesVisibility" Value="Horizontal"/>
<Setter Property="BorderBrush" Value="#E0E0E0"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="AlternatingRowBackground" Value="#F9F9F9"/>
</Style>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#F5F5F5" Offset="0"/>
<GradientStop Color="#E8E8E8" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="#D0D0D0"/>
<Setter Property="BorderThickness" Value="0,0,1,1"/>
<Setter Property="Foreground" Value="#333333"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Height" Value="32"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
<!-- 逆布尔转换器如果还没在App.xaml中定义可以在这里定义 -->
<!-- 注意如果已经在App.xaml中定义了InverseBooleanConverter请注释掉下面这一行 -->
<!-- <converters:InverseBooleanConverter x:Key="InverseBooleanConverter"/> -->
</UserControl.Resources>
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Background="#F2F2F2">
<Grid Margin="15">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- 样品基本信息栏(卡片) -->
<Border Grid.Row="0" Background="White" CornerRadius="6" Padding="12" Margin="0,0,0,10" Effect="{StaticResource CardShadow}">
<WrapPanel>
<TextBlock Text="样品ID:" VerticalAlignment="Center" FontWeight="SemiBold" Margin="0,0,8,0"/>
<TextBox Text="{Binding SampleId}" Width="140" Margin="0,0,25,0"/>
<TextBlock Text="测试温度(℃):" VerticalAlignment="Center" FontWeight="SemiBold" Margin="0,0,8,0"/>
<TextBox Text="{Binding TestTemperature}" Width="70" IsReadOnly="True" Background="#F0F8FF" Margin="0,0,25,0"/>
<TextBlock Text="日期:" VerticalAlignment="Center" FontWeight="SemiBold" Margin="0,0,8,0"/>
<TextBox Text="{Binding TestDateTime}" Width="150" IsReadOnly="True" Background="#F0F8FF" Margin="0,0,25,0"/>
<TextBlock Text="状态:" VerticalAlignment="Center" FontWeight="SemiBold" Margin="0,0,8,0"/>
<TextBox Text="{Binding StatusMessage}" Width="210" IsReadOnly="True" Background="#FFF7E6"/>
</WrapPanel>
</Border>
<!-- 样品体积卡片 -->
<Border Grid.Row="1" Background="White" CornerRadius="6" Padding="12" Margin="0,5" Effect="{StaticResource CardShadow}">
<WrapPanel>
<TextBlock Text="样品体积 (mL) [7.5]:" VerticalAlignment="Center" Width="140" FontWeight="SemiBold"/>
<TextBox Text="{Binding SampleVolume}" Width="80" Margin="5,0"/>
<TextBlock Text="标准要求约40 mL" Foreground="#777777" VerticalAlignment="Center" Margin="15,0,0,0"/>
</WrapPanel>
</Border>
<!-- 合规性确认区域(卡片) -->
<Border Grid.Row="2" Background="White" CornerRadius="6" Padding="12" Margin="0,5" Effect="{StaticResource CardShadow}">
<StackPanel>
<TextBlock Text="测试前确认(依据 ASTM D7896-19" FontWeight="Bold" FontSize="14" Margin="0,0,0,12" Foreground="#1E4F7A"/>
<WrapPanel>
<!-- 清洁确认 -->
<Border BorderBrush="#DDDDDD" BorderThickness="1" Padding="8" Margin="0,0,12,0" Width="210" CornerRadius="4" Background="#FEFEFE">
<StackPanel>
<TextBlock Text="章节7.1:采样池清洁" FontWeight="SemiBold" Margin="0,0,0,6"/>
<TextBox Text="{Binding CleanerName}" Width="120" Margin="0,4" ToolTip="请输入清洁人姓名"/>
<Button Content="确认清洁" Command="{Binding ConfirmCleanCommand}" Margin="0,4" Width="100"/>
<TextBlock Text="{Binding IsCleanConfirmed, StringFormat='已确认: {0}'}" FontSize="11" TextAlignment="Center" Margin="0,4"/>
</StackPanel>
</Border>
<!-- 排气泡确认 -->
<Border BorderBrush="#DDDDDD" BorderThickness="1" Padding="8" Margin="0,0,12,0" Width="210" CornerRadius="4" Background="#FEFEFE">
<StackPanel>
<TextBlock Text="章节7.6:清除气泡" FontWeight="SemiBold" Margin="0,0,0,6"/>
<Button Content="确认已清除气泡" Command="{Binding ConfirmBubbleRemovedCommand}" Margin="0,8" Width="120"/>
<TextBlock Text="{Binding BubbleRemoved, StringFormat='已确认: {0}'}" FontSize="11" TextAlignment="Center" Margin="0,4"/>
</StackPanel>
</Border>
<!-- 铂兼容性 -->
<Border BorderBrush="#DDDDDD" BorderThickness="1" Padding="8" Margin="0,0,12,0" Width="210" CornerRadius="4" Background="#FEFEFE">
<StackPanel>
<TextBlock Text="章节1.4:铂反应性" FontWeight="SemiBold" Margin="0,0,0,6"/>
<Button Content="确认液体与铂兼容" Command="{Binding ConfirmPlatinumCompatibleCommand}" Margin="0,4" Width="132"/>
<TextBox Text="{Binding LiquidReactivityNote}" Width="120" Margin="0,4" ToolTip="备注(可选)"/>
<TextBlock Text="{Binding PlatinumCompatible, StringFormat='已确认: {0}'}" FontSize="11" TextAlignment="Center"/>
</StackPanel>
</Border>
<!-- 环境温度校准 -->
<Border BorderBrush="#DDDDDD" BorderThickness="1" Padding="8" Width="210" CornerRadius="4" Background="#FEFEFE">
<StackPanel>
<TextBlock Text="章节8.1:环境温度校准" FontWeight="SemiBold" Margin="0,0,0,6"/>
<Button Content="开始校准" Command="{Binding CalibrateAmbientCommand}" Margin="0,8" Width="100"/>
<TextBlock Text="{Binding AmbientTemperature, StringFormat='温度: {0:F1} °C'}" TextAlignment="Center" Margin="0,4"/>
<TextBlock Text="{Binding AmbientCalibrated, StringFormat='校准状态: {0}'}" FontSize="11" TextAlignment="Center"/>
</StackPanel>
</Border>
</WrapPanel>
</StackPanel>
</Border>
<!-- 加压设置卡片 -->
<Border Grid.Row="3" Background="White" CornerRadius="6" Padding="12" Margin="0,5" Effect="{StaticResource CardShadow}">
<WrapPanel>
<CheckBox IsChecked="{Binding UsePressure}" Content="使用加压测试 (附录A2)" VerticalAlignment="Center" Width="200" Margin="0,0,20,0"/>
<TextBlock Text="压力 (kPa):" VerticalAlignment="Center" Margin="0,0,8,0"/>
<TextBox Text="{Binding PressureValue}" Width="80" IsEnabled="{Binding UsePressure}" Margin="0,0,20,0"/>
<TextBlock Text="(当液体蒸气压 >33.8 kPa时必须加压" Foreground="#777777" VerticalAlignment="Center"/>
</WrapPanel>
</Border>
<!-- 测量数据表格(卡片内嵌表格) -->
<Border Grid.Row="4" Background="White" CornerRadius="6" Padding="8" Margin="0,8" Effect="{StaticResource CardShadow}">
<DataGrid ItemsSource="{Binding Measurements}" AutoGenerateColumns="False"
CanUserAddRows="False" IsReadOnly="True"
HeadersVisibility="Column" GridLinesVisibility="Horizontal"
RowHeight="28" MinHeight="180">
<DataGrid.Columns>
<DataGridTextColumn Header="序号" Binding="{Binding Index}" Width="60" IsReadOnly="True"/>
<DataGridTextColumn Header="热导率 (W/m·K)" Binding="{Binding ThermalConductivity, StringFormat=F5}" Width="*" IsReadOnly="True"/>
<DataGridTextColumn Header="热扩散率 (×10⁻⁶ m²/s)" Binding="{Binding ThermalDiffusivity, StringFormat=F5}" Width="*" IsReadOnly="True"/>
<DataGridTextColumn Header="体积热容 (kJ/m³·K)" Binding="{Binding VolumetricHeatCapacity, StringFormat=F2}" Width="*" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
</Border>
<!-- 平均值显示卡片(高亮) -->
<Border Grid.Row="5" Background="#E8F0FE" CornerRadius="6" Padding="12" Margin="0,8" Effect="{StaticResource CardShadow}">
<StackPanel>
<TextBlock Text="测量平均值" FontWeight="Bold" FontSize="14" Margin="0,0,0,8" Foreground="#1E4F7A"/>
<WrapPanel>
<TextBlock Text="平均热导率:" Width="100" FontWeight="SemiBold"/>
<TextBox Text="{Binding AverageThermalConductivity, StringFormat=F5}" Width="100" IsReadOnly="True" Background="White"/>
<TextBlock Text="W/m·K" Margin="6,0,30,0"/>
<TextBlock Text="平均热扩散率:" Width="120" FontWeight="SemiBold"/>
<TextBox Text="{Binding AverageThermalDiffusivity, StringFormat=F5}" Width="100" IsReadOnly="True" Background="White"/>
<TextBlock Text="×10⁻⁶ m²/s" Margin="6,0,30,0"/>
<TextBlock Text="平均体积热容:" Width="100" FontWeight="SemiBold"/>
<TextBox Text="{Binding AverageVolumetricHeatCapacity, StringFormat=F2}" Width="100" IsReadOnly="True" Background="White"/>
<TextBlock Text="kJ/m³·K" Margin="6,0,0,0"/>
</WrapPanel>
</StackPanel>
</Border>
<!-- 系统校准卡片 -->
<Border Grid.Row="6" Background="White" CornerRadius="6" Padding="12" Margin="0,5" Effect="{StaticResource CardShadow}">
<StackPanel>
<TextBlock Text="系统校准 (附录A3)" FontWeight="Bold" FontSize="14" Margin="0,0,0,8" Foreground="#1E4F7A"/>
<WrapPanel VerticalAlignment="Center">
<TextBlock Text="参考液:" VerticalAlignment="Center"/>
<ComboBox ItemsSource="{Binding ReferenceLiquids}" SelectedItem="{Binding SelectedReferenceLiquid}" Width="110" Margin="8,0" Background="White"/>
<TextBlock Text="参考热导率 (W/m·K):" VerticalAlignment="Center" Margin="15,0,5,0"/>
<TextBox Text="{Binding ReferenceConductivity}" Width="80" Margin="0,0,15,0"/>
<Button Content="开始校准" Command="{Binding PerformSystemCalibrationCommand}" Width="100"
IsEnabled="{Binding IsCalibrating, Converter={StaticResource InverseBooleanConverter}}"/>
</WrapPanel>
<TextBlock Text="{Binding CalibrationStatus}" FontSize="11" Foreground="#0066CC" Margin="0,8,0,0"/>
<TextBlock Text="注使用已知热导率的参考液如蒸馏水0.606 W/m·K @25℃验证系统精度误差应在±2%以内。"
FontSize="10" Foreground="#666666" Margin="0,5,0,0"/>
</StackPanel>
</Border>
<!-- 操作按钮 -->
<StackPanel Grid.Row="7" Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,15,0,10">
<Button Content="▶ 开始测试" Command="{Binding StartTestCommand}" Width="130" Height="38" Margin="8"
IsEnabled="{Binding IsTesting, Converter={StaticResource InverseBooleanConverter}}"
Background="{StaticResource PrimaryButtonBrush}"/>
<Button Content="⟳ 重置" Command="{Binding ResetCommand}" Width="100" Height="38" Margin="8"/>
<Button Content="📄 生成报告" Command="{Binding GenerateReportCommand}" Width="110" Height="38" Margin="8"/>
</StackPanel>
</Grid>
</ScrollViewer>
</UserControl>