Files
Z173/Views/MainWindow.xaml

386 lines
25 KiB
Plaintext
Raw Normal View History

2026-06-13 14:16:34 +08:00
<Window x:Class="AciTester.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:AciTester.ViewModels"
Title="ACI测试系统 - 中国药典2025装置3"
Height="768" Width="1024"
2026-06-17 20:54:24 +08:00
WindowStartupLocation="CenterScreen" WindowState="Maximized"
2026-06-16 11:53:02 +08:00
Background="#F0F2F5">
2026-06-13 14:16:34 +08:00
<Window.DataContext>
<local:MainViewModel/>
</Window.DataContext>
2026-06-16 11:53:02 +08:00
<Window.Resources>
2026-06-17 20:54:24 +08:00
<!-- 全局样式:紧凑版 -->
2026-06-16 11:53:02 +08:00
<Style TargetType="Button">
2026-06-17 20:54:24 +08:00
<Setter Property="Height" Value="30"/>
<Setter Property="MinWidth" Value="60"/>
<Setter Property="Margin" Value="3"/>
<Setter Property="FontSize" Value="12"/>
2026-06-16 11:53:02 +08:00
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Background" Value="#2C7DA0"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="BorderBrush" Value="#1F5E7A"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Cursor" Value="Hand"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="#CCCCCC"/>
<Setter Property="Foreground" Value="#666666"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#1F5E7A"/>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="TextBox">
2026-06-17 20:54:24 +08:00
<Setter Property="Height" Value="28"/>
<Setter Property="FontSize" Value="12"/>
2026-06-16 11:53:02 +08:00
<Setter Property="BorderBrush" Value="#CCCCCC"/>
<Setter Property="BorderThickness" Value="1"/>
2026-06-17 20:54:24 +08:00
<Setter Property="Padding" Value="3"/>
2026-06-16 11:53:02 +08:00
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
<Style TargetType="ToggleButton">
2026-06-17 20:54:24 +08:00
<Setter Property="Height" Value="28"/>
<Setter Property="Width" Value="60"/>
<Setter Property="FontSize" Value="12"/>
2026-06-16 11:53:02 +08:00
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Background" Value="#E74C3C"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Cursor" Value="Hand"/>
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" Value="#27AE60"/>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="DataGrid">
2026-06-17 20:54:24 +08:00
<Setter Property="FontSize" Value="12"/>
<Setter Property="RowHeight" Value="26"/>
2026-06-16 11:53:02 +08:00
<Setter Property="HeadersVisibility" Value="Column"/>
<Setter Property="GridLinesVisibility" Value="Horizontal"/>
<Setter Property="AlternatingRowBackground" Value="#F9F9F9"/>
2026-06-17 20:54:24 +08:00
<Setter Property="VerticalAlignment" Value="Stretch"/>
2026-06-16 11:53:02 +08:00
</Style>
<Style TargetType="DataGridColumnHeader">
2026-06-17 20:54:24 +08:00
<Setter Property="Height" Value="28"/>
2026-06-16 11:53:02 +08:00
<Setter Property="Background" Value="#E9F0F5"/>
<Setter Property="FontWeight" Value="Bold"/>
2026-06-17 20:54:24 +08:00
<Setter Property="FontSize" Value="12"/>
2026-06-16 11:53:02 +08:00
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
<Style TargetType="DataGridCell">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
2026-06-17 20:54:24 +08:00
<Setter Property="FontSize" Value="12"/>
2026-06-16 11:53:02 +08:00
</Style>
</Window.Resources>
2026-06-17 20:54:24 +08:00
<Grid Margin="8">
2026-06-13 14:16:34 +08:00
<Grid.RowDefinitions>
2026-06-16 11:53:02 +08:00
<RowDefinition Height="Auto"/>
2026-06-13 14:16:34 +08:00
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- 状态栏 (Row 0) -->
2026-06-17 20:54:24 +08:00
<Border Grid.Row="0" Background="#2C3E50" CornerRadius="4" Padding="6" Margin="0,0,0,6">
2026-06-16 11:53:02 +08:00
<StackPanel Orientation="Horizontal">
2026-06-17 20:54:24 +08:00
<TextBlock Text="状态:" Foreground="White" FontSize="12" VerticalAlignment="Center"/>
<TextBlock Text="{Binding ConnectionStatus}" Foreground="{Binding IsConnected, Converter={StaticResource BoolToColorConverter}}" FontSize="12" FontWeight="Bold" Margin="3,0,15,0"/>
<Separator Background="White" Width="1" Margin="3,0"/>
<TextBlock Text="流量:" Foreground="White" FontSize="12" Margin="10,0,0,0"/>
<TextBlock Text="{Binding CurrentFlow, StringFormat='{}{0:F2} L/min'}" Foreground="White" FontSize="12" FontWeight="Bold" Margin="3,0,15,0"/>
<Separator Background="White" Width="1" Margin="3,0"/>
<TextBlock Text="泵状态:" Foreground="White" FontSize="12" Margin="10,0,0,0"/>
<TextBlock Text="{Binding IsPumpRunning, Converter={StaticResource BoolToStringConverter}}" Foreground="White" FontSize="12" FontWeight="Bold" Margin="3,0,15,0"/>
<Separator Background="White" Width="1" Margin="3,0"/>
<TextBlock Text="倒计时:" Foreground="White" FontSize="12" Margin="10,0,0,0" Visibility="{Binding IsTesting, Converter={StaticResource BoolToVisibilityConverter}}"/>
<TextBlock Text="{Binding RemainingSeconds, StringFormat='{}{0} s'}" Foreground="Orange" FontSize="12" FontWeight="Bold" Margin="3,0,0,0" Visibility="{Binding IsTesting, Converter={StaticResource BoolToVisibilityConverter}}"/>
2026-06-16 11:53:02 +08:00
</StackPanel>
</Border>
2026-06-13 14:16:34 +08:00
<!-- 实时监测参数 (Row 1) -->
2026-06-17 20:54:24 +08:00
<GroupBox Header="实时监测参数" Grid.Row="1" Margin="0,3" FontWeight="Bold" FontSize="12" Padding="2">
<StackPanel Margin="4">
<Grid Margin="0,2">
2026-06-13 14:16:34 +08:00
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
2026-06-17 20:54:24 +08:00
<Border Grid.Column="0" Background="#E3F2FD" CornerRadius="6" Padding="6" Margin="3">
2026-06-16 11:53:02 +08:00
<StackPanel>
2026-06-17 20:54:24 +08:00
<TextBlock Text="流量 (L/min)" FontWeight="Bold" FontSize="11" TextAlignment="Center"/>
<TextBlock Text="{Binding RealTime.CalibratedFlow, StringFormat='{}{0:F2}'}" FontSize="20" Foreground="#1565C0" TextAlignment="Center"/>
<TextBlock Text="(目标: 30)" FontSize="10" Foreground="Gray" TextAlignment="Center"/>
2026-06-16 11:53:02 +08:00
</StackPanel>
</Border>
2026-06-17 20:54:24 +08:00
<Border Grid.Column="1" Background="#FFF3E0" CornerRadius="6" Padding="6" Margin="3">
2026-06-16 11:53:02 +08:00
<StackPanel>
2026-06-17 20:54:24 +08:00
<TextBlock Text="温度 (℃)" FontWeight="Bold" FontSize="11" TextAlignment="Center"/>
<TextBlock Text="{Binding RealTime.Temperature, StringFormat='{}{0:F1}'}" FontSize="20" Foreground="#E65100" TextAlignment="Center"/>
2026-06-16 11:53:02 +08:00
</StackPanel>
</Border>
2026-06-17 20:54:24 +08:00
<Border Grid.Column="2" Background="#E8F5E9" CornerRadius="6" Padding="6" Margin="3">
2026-06-16 11:53:02 +08:00
<StackPanel>
2026-06-17 20:54:24 +08:00
<TextBlock Text="泵端压力 (kPa)" FontWeight="Bold" FontSize="11" TextAlignment="Center"/>
<TextBlock Text="{Binding RealTime.PumpPressure, StringFormat='{}{0:F2}'}" FontSize="20" Foreground="#2E7D32" TextAlignment="Center"/>
2026-06-16 11:53:02 +08:00
</StackPanel>
</Border>
2026-06-17 20:54:24 +08:00
<Border Grid.Column="3" Background="#FCE4EC" CornerRadius="6" Padding="6" Margin="3">
2026-06-16 11:53:02 +08:00
<StackPanel>
2026-06-17 20:54:24 +08:00
<TextBlock Text="撞击器端压力 (kPa)" FontWeight="Bold" FontSize="11" TextAlignment="Center"/>
<TextBlock Text="{Binding RealTime.ImpactorPressure, StringFormat='{}{0:F2}'}" FontSize="20" Foreground="#C2185B" TextAlignment="Center"/>
2026-06-16 11:53:02 +08:00
</StackPanel>
</Border>
2026-06-13 14:16:34 +08:00
</Grid>
2026-06-17 20:54:24 +08:00
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,2">
<TextBlock Text="压差: " FontWeight="Bold" FontSize="12"/>
<TextBlock Text="{Binding RealTime.DifferentialPressure, StringFormat='{}{0:F2} kPa'}" FontSize="12" FontWeight="Bold" Foreground="#D32F2F"/>
2026-06-13 14:16:34 +08:00
</StackPanel>
</StackPanel>
</GroupBox>
2026-06-17 20:54:24 +08:00
<!-- 空调与除霜控制 (Row 2) 缩小为单行 -->
<Border Grid.Row="2" Background="#F5F5F5" CornerRadius="4" Padding="4" Margin="0,2" BorderBrush="#DDD" BorderThickness="1">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Text="空调倒计时:" FontSize="11" VerticalAlignment="Center" Margin="0,0,2,0"/>
<TextBlock Text="{Binding RealTime.AcStartupCountdown, StringFormat='{}{0}s'}" FontSize="12" FontWeight="Bold" Foreground="#F57C00" Margin="0,5,15,0"/>
<TextBlock Text="恒温启动" FontSize="11" VerticalAlignment="Center" Margin="0,0,2,0"/>
<ToggleButton IsChecked="{Binding RealTime.ConstantTempStart, Mode=TwoWay}"
Command="{Binding WriteConstantTempStartCommand}"
CommandParameter="{Binding IsChecked, RelativeSource={RelativeSource Self}}"
IsEnabled="{Binding ConstantTempStartEnabled}"
Width="50" Height="22" FontSize="10"/>
<TextBlock Text="除霜启动" FontSize="11" VerticalAlignment="Center" Margin="10,0,2,0"/>
<ToggleButton IsChecked="{Binding RealTime.DefrostStart, Mode=TwoWay}"
Command="{Binding WriteDefrostStartCommand}"
CommandParameter="{Binding IsChecked, RelativeSource={RelativeSource Self}}"
Width="50" Height="22" FontSize="10"/>
<TextBlock Text="{Binding RealTime.DefrostStart, Converter={StaticResource BoolToYesNoConverter}}" FontSize="10" Foreground="Red" Margin="3,0,10,0"/>
<TextBlock Text="除霜温度" FontSize="11" VerticalAlignment="Center"/>
<TextBox Text="{Binding RealTime.DefrostTempSet, UpdateSourceTrigger=LostFocus, Mode=TwoWay}" Width="50" Height="22" FontSize="10" Margin="2,0"/>
<TextBlock Text="时间" FontSize="11" VerticalAlignment="Center" Margin="5,0,0,0"/>
<TextBox Text="{Binding RealTime.DefrostTimeSet, UpdateSourceTrigger=LostFocus, Mode=TwoWay}" Width="50" Height="22" FontSize="10" Margin="2,0"/>
<TextBlock Text="计时" FontSize="11" VerticalAlignment="Center" Margin="5,0,0,0"/>
<TextBlock Text="{Binding RealTime.DefrostMinute, StringFormat='{}{0}分'}" FontSize="11" Margin="2,5"/>
<TextBlock Text="{Binding RealTime.DefrostSecond, StringFormat='{}{0}秒'}" FontSize="11" Margin="2,5"/>
</StackPanel>
</Border>
2026-06-16 11:53:02 +08:00
<!-- 主内容 (Row 3) -->
2026-06-17 20:54:24 +08:00
<Grid Grid.Row="3" Margin="0,4">
2026-06-16 11:53:02 +08:00
<Grid.ColumnDefinitions>
2026-06-17 20:54:24 +08:00
<ColumnDefinition Width="320"/>
2026-06-16 11:53:02 +08:00
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- 左侧控制区 -->
2026-06-17 20:54:24 +08:00
<Border Grid.Column="0" Background="White" CornerRadius="6" Padding="6" Margin="0,0,6,0" BorderBrush="#DDDDDD" BorderThickness="1">
<StackPanel>
<GroupBox Header="通讯控制" Margin="0,0,0,6" Padding="2" FontSize="12">
<StackPanel>
<Button Command="{Binding ConnectCommand}" Content="连接PLC" Height="28"/>
<Button Command="{Binding DisconnectCommand}" Content="断开连接" Height="28"/>
</StackPanel>
</GroupBox>
<GroupBox Header="采样参数" Margin="0,0,0,6" Padding="2" FontSize="12">
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,2">
<TextBlock Text="采样时间(秒):" Width="90" VerticalAlignment="Center" FontSize="12"/>
<TextBox Text="{Binding SampleTimeSeconds}" Width="60" IsEnabled="{Binding IsTesting, Converter={StaticResource InverseBoolConverter}}"/>
2026-06-16 11:53:02 +08:00
</StackPanel>
2026-06-16 21:18:46 +08:00
2026-06-17 20:54:24 +08:00
<!-- 手动控制 (泵/阀) 突出显示 -->
<Border BorderBrush="#2C7DA0" BorderThickness="2" CornerRadius="4" Padding="4" Margin="0,4" Background="#F0F8FF">
<StackPanel>
<TextBlock Text="手动控制 (泵/阀)" FontWeight="Bold" FontSize="11" Foreground="#1F5E7A" Margin="0,0,0,2"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button Command="{Binding OpenValveCommand}" Content="开阀" Width="55" Height="28" Margin="2" Background="#3498DB"/>
<Button Command="{Binding CloseValveCommand}" Content="关阀" Width="55" Height="28" Margin="2" Background="#E74C3C"/>
<Button Command="{Binding StartPumpCommand}" Content="启泵" Width="55" Height="28" Margin="2" Background="#2ECC71"/>
<Button Command="{Binding StopPumpCommand}" Content="停泵" Width="55" Height="28" Margin="2" Background="#E67E22"/>
2026-06-16 20:50:05 +08:00
</StackPanel>
2026-06-17 20:54:24 +08:00
</StackPanel>
</Border>
2026-06-13 14:16:34 +08:00
2026-06-17 20:54:24 +08:00
<Button Command="{Binding StartTestCommand}" Content="开始测试" Height="30" Margin="0,6,0,0" IsEnabled="{Binding IsTesting, Converter={StaticResource InverseBoolConverter}}"/>
<TextBlock Text="测试进行中..." Visibility="{Binding IsTesting, Converter={StaticResource BoolToVisibilityConverter}}" Foreground="Orange" FontWeight="Bold" FontSize="12" Margin="0,2,0,0" HorizontalAlignment="Center"/>
<Button Command="{Binding StopTestCommand}" Content="停止测试" Height="30" Margin="0,4,0,0" Background="#E74C3C" IsEnabled="{Binding IsTesting}"/>
</StackPanel>
</GroupBox>
<GroupBox Header="数据分析" Padding="2" FontSize="12">
<StackPanel>
<Button Command="{Binding CalculateCommand}" Content="计算结果" Height="28"/>
<Button Command="{Binding ExportReportCommand}" Content="导出报告" Height="28"/>
</StackPanel>
</GroupBox>
</StackPanel>
2026-06-16 11:53:02 +08:00
</Border>
2026-06-16 21:18:46 +08:00
2026-06-17 20:54:24 +08:00
<Border Grid.Column="1" Background="White" CornerRadius="6" Padding="4" BorderBrush="#DDDDDD" BorderThickness="1"
VerticalAlignment="Stretch">
<DataGrid x:Name="StagesDataGrid"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
ItemsSource="{Binding Stages}"
AutoGenerateColumns="False"
CanUserAddRows="False"
IsReadOnly="False"
Loaded="StagesDataGrid_Loaded"
FontSize="13"
RowHeight="34"
FocusVisualStyle="{x:Null}"
GridLinesVisibility="None"
SelectionMode="Single"
SelectionUnit="FullRow">
2026-06-16 21:18:46 +08:00
2026-06-17 20:54:24 +08:00
<DataGrid.Resources>
<!-- 统一单元格样式 -->
<Style TargetType="DataGridCell">
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Padding" Value="8,4"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Foreground" Value="#1E2A3A"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="True">
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#D0E4F5"/>
<Setter Property="Foreground" Value="#1E2A3A"/>
</Trigger>
</Style.Triggers>
</Style>
2026-06-16 21:18:46 +08:00
2026-06-17 20:54:24 +08:00
<!-- 选中行样式 -->
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="White"/>
<Setter Property="Foreground" Value="#1E2A3A"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#D0E4F5"/>
<Setter Property="Foreground" Value="#1E2A3A"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#E5F0FA"/>
</Trigger>
</Style.Triggers>
</Style>
2026-06-16 21:18:46 +08:00
2026-06-17 20:54:24 +08:00
<!-- 编辑状态文本框样式 -->
<Style TargetType="TextBox" x:Key="EditingTextBoxStyle">
<Setter Property="Padding" Value="6,4"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background" Value="White"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="Foreground" Value="#1E2A3A"/>
</Style>
</DataGrid.Resources>
2026-06-16 21:18:46 +08:00
2026-06-17 20:54:24 +08:00
<DataGrid.Columns>
<DataGridTextColumn Header="层级" Binding="{Binding StageName}" Width="75" IsReadOnly="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Padding" Value="8,4"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="Foreground" Value="#1E2A3A"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="截止直径(μm)" Binding="{Binding CutoffDiameter, StringFormat='{}{0:F1}'}" Width="85" IsReadOnly="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Padding" Value="8,4"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="Foreground" Value="#1E2A3A"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="测前(g)" Binding="{Binding InitialWeight, UpdateSourceTrigger=LostFocus, Delay=300, StringFormat='{}{0:F4}'}" Width="95">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Padding" Value="8,4"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="Foreground" Value="#1E2A3A"/>
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox" BasedOn="{StaticResource EditingTextBoxStyle}"/>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="测后(g)" Binding="{Binding FinalWeight, UpdateSourceTrigger=LostFocus, Delay=300, StringFormat='{}{0:F4}'}" Width="95">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Padding" Value="8,4"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="Foreground" Value="#1E2A3A"/>
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox" BasedOn="{StaticResource EditingTextBoxStyle}"/>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="净重(g)" Binding="{Binding NetWeight, StringFormat='{}{0:F6}'}" Width="95" IsReadOnly="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Padding" Value="8,4"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="Foreground" Value="#1E2A3A"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Border>
</Grid>
2026-06-16 21:18:46 +08:00
2026-06-17 20:54:24 +08:00
<!-- 结果显示 (Row 4) -->
<Border Grid.Row="4" Background="#E8F5E9" CornerRadius="6" Padding="6" Margin="0,4,0,0" BorderBrush="#A5D6A7" BorderThickness="1">
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Center">
<TextBlock Text="FPD: " FontWeight="Bold" FontSize="12"/>
<TextBlock Text="{Binding CurrentResult.FineParticleDose, StringFormat='{}{0:F2} mg'}" FontSize="12" Margin="0,0,15,0"/>
<TextBlock Text="FPF: " FontWeight="Bold" FontSize="12"/>
<TextBlock Text="{Binding CurrentResult.FineParticleFraction, StringFormat='{}{0:F2} %'}" FontSize="12" Margin="0,0,15,0"/>
<TextBlock Text="D10: " FontWeight="Bold" FontSize="12"/>
<TextBlock Text="{Binding CurrentResult.D10, StringFormat='{}{0:F2} μm'}" FontSize="12" Margin="0,0,15,0"/>
<TextBlock Text="D50: " FontWeight="Bold" FontSize="12"/>
<TextBlock Text="{Binding CurrentResult.D50, StringFormat='{}{0:F2} μm'}" FontSize="12" Margin="0,0,15,0"/>
<TextBlock Text="D90: " FontWeight="Bold" FontSize="12"/>
<TextBlock Text="{Binding CurrentResult.D90, StringFormat='{}{0:F2} μm'}" FontSize="12" Margin="0,0,15,0"/>
<TextBlock Text="GSD: " FontWeight="Bold" FontSize="12"/>
<TextBlock Text="{Binding CurrentResult.GSD, StringFormat='{}{0:F3}'}" FontSize="12"/>
</WrapPanel>
2026-06-13 14:16:34 +08:00
</Border>
</Grid>
</Window>