Files
CSI-Z420-Tablet-Multi-Funct…/Views/MainWindow.xaml

849 lines
60 KiB
Plaintext
Raw Normal View History

2026-05-16 17:33:25 +08:00
<Window x:Class="TabletTester2025.MainWindow"
2026-05-05 15:31:24 +08:00
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:oxy="http://oxyplot.org/wpf"
2026-05-06 16:41:32 +08:00
xmlns:helpers="clr-namespace:TabletTester2025.Helpers"
2026-05-16 17:33:25 +08:00
Title="片剂四用仪 (中国药典2025)"
Width="1024"
MinHeight="768"
WindowState="Maximized"
WindowStartupLocation="CenterScreen"
Background="#EDF1F5">
2026-05-05 15:31:24 +08:00
<Window.Resources>
<helpers:BasketOffsetConverter x:Key="BasketOffsetConverter"/>
<helpers:StatusColorConverter x:Key="StatusColorConverter"/>
2026-05-16 17:33:25 +08:00
<DropShadowEffect x:Key="DropShadowLight" BlurRadius="6" ShadowDepth="1" Opacity="0.14"/>
<SolidColorBrush x:Key="PrimaryBrush" Color="#1565A9"/>
<SolidColorBrush x:Key="PanelBorderBrush" Color="#D8E1EC"/>
<SolidColorBrush x:Key="PanelBackgroundBrush" Color="#FFFFFF"/>
<SolidColorBrush x:Key="SubtleBackgroundBrush" Color="#F7FAFC"/>
<SolidColorBrush x:Key="LabelBrush" Color="#526273"/>
<SolidColorBrush x:Key="ValueBrush" Color="#102A43"/>
2026-05-06 16:41:32 +08:00
<Style TargetType="Button" x:Key="ActionButton">
2026-05-16 17:33:25 +08:00
<Setter Property="MinWidth" Value="112"/>
<Setter Property="Height" Value="42"/>
<Setter Property="Margin" Value="6"/>
<Setter Property="Padding" Value="14,0"/>
2026-05-06 16:41:32 +08:00
<Setter Property="Cursor" Value="Hand"/>
2026-05-16 17:33:25 +08:00
<Setter Property="Background" Value="{StaticResource PrimaryBrush}"/>
2026-05-05 15:31:24 +08:00
<Setter Property="Foreground" Value="White"/>
<Setter Property="BorderThickness" Value="0"/>
2026-05-16 17:33:25 +08:00
<Setter Property="FontSize" Value="15"/>
2026-05-16 16:58:57 +08:00
<Setter Property="FontWeight" Value="SemiBold"/>
2026-05-05 15:31:24 +08:00
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
2026-05-16 17:33:25 +08:00
<Border Background="{TemplateBinding Background}" CornerRadius="4" Padding="{TemplateBinding Padding}">
2026-05-05 15:31:24 +08:00
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
2026-05-16 16:58:57 +08:00
<ControlTemplate.Triggers>
2026-05-16 17:33:25 +08:00
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0.9"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Opacity" Value="0.78"/>
</Trigger>
2026-05-16 16:58:57 +08:00
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.45"/>
</Trigger>
</ControlTemplate.Triggers>
2026-05-05 15:31:24 +08:00
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
2026-05-16 17:33:25 +08:00
<Style TargetType="Button" x:Key="StartButton" BasedOn="{StaticResource ActionButton}">
<Setter Property="Background" Value="#2E7D32"/>
</Style>
<Style TargetType="Button" x:Key="StopButton" BasedOn="{StaticResource ActionButton}">
<Setter Property="Background" Value="#C62828"/>
</Style>
<Style TargetType="Button" x:Key="ResetButton" BasedOn="{StaticResource ActionButton}">
<Setter Property="Background" Value="#687789"/>
</Style>
<Style TargetType="Button" x:Key="SecondaryButton" BasedOn="{StaticResource ActionButton}">
<Setter Property="Background" Value="#496579"/>
</Style>
2026-05-16 16:58:57 +08:00
<Style TargetType="TabControl">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="TabItem">
2026-05-16 17:33:25 +08:00
<Setter Property="FontSize" Value="16"/>
2026-05-16 16:58:57 +08:00
<Setter Property="FontWeight" Value="SemiBold"/>
2026-05-16 17:33:25 +08:00
<Setter Property="Padding" Value="24,12"/>
<Setter Property="Foreground" Value="#465A6E"/>
2026-05-16 16:58:57 +08:00
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
2026-05-16 17:33:25 +08:00
<Border x:Name="TabBorder"
Background="#F6F9FC"
BorderBrush="#D3DEEA"
BorderThickness="1,1,1,0"
CornerRadius="6,6,0,0"
Padding="{TemplateBinding Padding}"
Margin="0,0,6,0">
2026-05-16 16:58:57 +08:00
<ContentPresenter ContentSource="Header" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="TabBorder" Property="Background" Value="White"/>
2026-05-16 17:33:25 +08:00
<Setter TargetName="TabBorder" Property="BorderBrush" Value="{StaticResource PrimaryBrush}"/>
2026-05-16 16:58:57 +08:00
<Setter Property="Foreground" Value="#0F3D68"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="GroupBox">
2026-05-16 17:33:25 +08:00
<Setter Property="BorderBrush" Value="{StaticResource PanelBorderBrush}"/>
2026-05-16 16:58:57 +08:00
<Setter Property="BorderThickness" Value="1"/>
2026-05-16 17:33:25 +08:00
<Setter Property="Padding" Value="14"/>
<Setter Property="Margin" Value="0,0,0,12"/>
<Setter Property="FontSize" Value="15"/>
2026-05-16 16:58:57 +08:00
<Setter Property="FontWeight" Value="SemiBold"/>
2026-05-16 17:33:25 +08:00
<Setter Property="Background" Value="{StaticResource PanelBackgroundBrush}"/>
2026-05-16 16:58:57 +08:00
</Style>
<Style TargetType="TextBox">
2026-05-18 14:06:04 +08:00
<Setter Property="Width" Value="130"/>
<Setter Property="Height" Value="40"/>
2026-05-16 17:33:25 +08:00
<Setter Property="Padding" Value="8,2"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="BorderBrush" Value="#B7C4D2"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="FontSize" Value="15"/>
2026-05-18 14:06:04 +08:00
<Setter Property="helpers:NumericInput.IsEnabled" Value="True"/>
2026-05-16 17:33:25 +08:00
</Style>
<Style TargetType="RadioButton">
<Setter Property="FontSize" Value="15"/>
<Setter Property="Margin" Value="0,0,22,0"/>
2026-05-16 16:58:57 +08:00
<Setter Property="VerticalContentAlignment" Value="Center"/>
2026-05-16 17:33:25 +08:00
</Style>
<Style TargetType="TextBlock" x:Key="ParamLabel">
2026-05-18 14:06:04 +08:00
<Setter Property="Width" Value="250"/>
2026-05-16 17:33:25 +08:00
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Foreground" Value="{StaticResource LabelBrush}"/>
<Setter Property="FontSize" Value="15"/>
<Setter Property="FontWeight" Value="Normal"/>
2026-05-18 14:06:04 +08:00
<Setter Property="TextWrapping" Value="Wrap"/>
2026-05-16 17:33:25 +08:00
</Style>
<Style TargetType="StackPanel" x:Key="ParamRow">
<Setter Property="Orientation" Value="Horizontal"/>
<Setter Property="Margin" Value="0,6,26,6"/>
<Setter Property="VerticalAlignment" Value="Center"/>
2026-05-18 14:06:04 +08:00
<Setter Property="MinWidth" Value="400"/>
2026-05-16 17:33:25 +08:00
</Style>
<Style TargetType="Border" x:Key="MetricCard">
<Setter Property="Background" Value="{StaticResource SubtleBackgroundBrush}"/>
<Setter Property="BorderBrush" Value="#E0E7EF"/>
2026-05-16 16:58:57 +08:00
<Setter Property="BorderThickness" Value="1"/>
2026-05-16 17:33:25 +08:00
<Setter Property="CornerRadius" Value="6"/>
<Setter Property="Padding" Value="12,10"/>
<Setter Property="Margin" Value="6"/>
<Setter Property="MinHeight" Value="86"/>
</Style>
<Style TargetType="TextBlock" x:Key="MetricLabel">
<Setter Property="Foreground" Value="{StaticResource LabelBrush}"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="FontWeight" Value="Normal"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
<Style TargetType="TextBlock" x:Key="MetricValue">
<Setter Property="Foreground" Value="{StaticResource ValueBrush}"/>
<Setter Property="FontSize" Value="26"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="Margin" Value="0,8,0,0"/>
</Style>
<Style TargetType="WrapPanel" x:Key="CommandBar">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="0,8,0,0"/>
2026-05-16 16:58:57 +08:00
</Style>
2026-05-16 17:56:45 +08:00
<Style TargetType="Border" x:Key="FooterItem">
<Setter Property="Background" Value="#F8FBFD"/>
<Setter Property="BorderBrush" Value="#DFE7EF"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="5"/>
<Setter Property="Padding" Value="12,7"/>
<Setter Property="MinHeight" Value="36"/>
</Style>
<Style TargetType="TextBlock" x:Key="FooterLabel">
<Setter Property="Foreground" Value="#647487"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style TargetType="TextBlock" x:Key="FooterValue">
<Setter Property="Foreground" Value="#102A43"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
2026-05-05 15:31:24 +08:00
<DataTemplate x:Key="StationCardTemplate">
2026-05-16 17:33:25 +08:00
<Border BorderBrush="{StaticResource PanelBorderBrush}"
BorderThickness="1"
CornerRadius="8"
Padding="12"
Background="White"
Effect="{StaticResource DropShadowLight}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding LocalAlarm}"
FontSize="15"
FontWeight="SemiBold"
Margin="0,0,0,8"
HorizontalAlignment="Center">
2026-05-06 16:41:32 +08:00
<TextBlock.Style>
<Style TargetType="TextBlock">
2026-05-16 17:33:25 +08:00
<Setter Property="Foreground" Value="#C62828"/>
2026-05-16 16:58:57 +08:00
<Setter Property="Visibility" Value="Visible"/>
2026-05-06 16:41:32 +08:00
<Style.Triggers>
2026-05-16 16:58:57 +08:00
<DataTrigger Binding="{Binding LocalAlarm}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
<DataTrigger Binding="{Binding LocalAlarm}" Value="">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
2026-05-20 14:27:16 +08:00
<DataTrigger Binding="{Binding LocalAlarm}" Value="硬度测试完成,已保存">
2026-05-18 14:06:04 +08:00
<Setter Property="Foreground" Value="#1565C0"/>
2026-05-06 16:41:32 +08:00
</DataTrigger>
2026-05-20 14:27:16 +08:00
<DataTrigger Binding="{Binding LocalAlarm}" Value="脆碎度测试完成,已保存">
2026-05-18 14:06:04 +08:00
<Setter Property="Foreground" Value="#1565C0"/>
2026-05-06 16:41:32 +08:00
</DataTrigger>
2026-05-20 14:27:16 +08:00
<DataTrigger Binding="{Binding LocalAlarm}" Value="崩解测试完成,已保存">
2026-05-18 14:06:04 +08:00
<Setter Property="Foreground" Value="#1565C0"/>
2026-05-06 16:41:32 +08:00
</DataTrigger>
2026-05-20 14:27:16 +08:00
<DataTrigger Binding="{Binding LocalAlarm}" Value="溶出测试完成,已保存">
2026-05-18 14:06:04 +08:00
<Setter Property="Foreground" Value="#1565C0"/>
2026-05-06 16:41:32 +08:00
</DataTrigger>
2026-05-20 14:27:16 +08:00
<DataTrigger Binding="{Binding LocalAlarm}" Value="溶出1测试完成已保存">
2026-05-18 14:06:04 +08:00
<Setter Property="Foreground" Value="#1565C0"/>
2026-05-16 16:58:57 +08:00
</DataTrigger>
2026-05-20 14:27:16 +08:00
<DataTrigger Binding="{Binding LocalAlarm}" Value="溶出2测试完成已保存">
2026-05-18 14:06:04 +08:00
<Setter Property="Foreground" Value="#1565C0"/>
2026-05-16 16:58:57 +08:00
</DataTrigger>
2026-05-06 16:41:32 +08:00
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
2026-05-16 17:33:25 +08:00
<TabControl Grid.Row="1" FontSize="13" BorderThickness="0">
2026-05-18 16:07:46 +08:00
<TabItem Header="硬度">
2026-05-20 14:27:16 +08:00
<ScrollViewer VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled">
2026-05-16 17:33:25 +08:00
<Grid Margin="4,14,4,4">
2026-05-06 16:41:32 +08:00
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
2026-05-16 17:33:25 +08:00
<RowDefinition Height="*"/>
2026-05-06 16:41:32 +08:00
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
2026-05-18 15:18:28 +08:00
<GroupBox Header="当前参数" Grid.Row="0" Margin="0,5">
2026-05-18 14:06:04 +08:00
<UniformGrid Columns="3" Margin="10">
2026-05-19 18:56:05 +08:00
<!--<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,10,18,0">
2026-05-18 14:06:04 +08:00
<TextBlock Text="内控下限(N)" Width="130" VerticalAlignment="Center"/>
<TextBlock Text="{Binding HardnessInternalMin, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,10,18,0">
<TextBlock Text="内控上限(N)" Width="130" VerticalAlignment="Center"/>
<TextBlock Text="{Binding HardnessInternalMax, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
2026-05-19 18:56:05 +08:00
</StackPanel>-->
2026-05-18 14:06:04 +08:00
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,10,0,0">
<TextBlock Text="测试次数:" Width="110" VerticalAlignment="Center"/>
<TextBlock Text="{Binding HardnessTestCount}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
2026-05-06 16:41:32 +08:00
</StackPanel>
2026-05-16 18:33:41 +08:00
</UniformGrid>
2026-05-06 16:41:32 +08:00
</GroupBox>
2026-05-05 15:31:24 +08:00
2026-05-20 11:13:12 +08:00
<GroupBox Header="测试结果" Grid.Row="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<UniformGrid Grid.Row="0" Columns="4">
<Border Style="{StaticResource MetricCard}">
<StackPanel>
<TextBlock Text="实时力(N)" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding HardnessShishilizhi, StringFormat=F1}" Foreground="#C62828" Style="{StaticResource MetricValue}"/>
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
<TextBlock Text="最大力值(N)" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding HardnessMax, StringFormat=F1}" Foreground="#1565C0" Style="{StaticResource MetricValue}"/>
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
<TextBlock Text="平均值(N)" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding HardnessAvg, StringFormat=F1}" Style="{StaticResource MetricValue}"/>
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
<TextBlock Text="平均偏差(N)" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding HardnessAverageDeviation, StringFormat=F2}" Style="{StaticResource MetricValue}"/>
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
<TextBlock Text="RSD(%)" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding HardnessRSD, StringFormat=F2}" Style="{StaticResource MetricValue}"/>
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
<TextBlock Text="本组次数" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding HardnessCurrentCount}" Style="{StaticResource MetricValue}"/>
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
<TextBlock Text="累计次数" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding HardnessTotalCount}" Style="{StaticResource MetricValue}"/>
</StackPanel>
</Border>
</UniformGrid>
<DataGrid Grid.Row="1"
ItemsSource="{Binding HardnessDisplaySamplePoints}"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
IsReadOnly="True"
HeadersVisibility="Column"
Margin="10,8,10,10"
MinHeight="160"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
2026-05-20 13:33:15 +08:00
<DataGrid.RowStyle>
<Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSummaryRow}" Value="True">
<Setter Property="Background" Value="#DBEAFE"/>
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
2026-05-20 11:13:12 +08:00
<DataGrid.Columns>
2026-05-20 13:33:15 +08:00
<DataGridTemplateColumn Header="累计次数" Width="85">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding CumulativeNo}" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSummaryRow}" Value="True">
<Setter Property="Text" Value=""/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
2026-05-20 11:13:12 +08:00
<DataGridTextColumn Header="组号" Binding="{Binding GroupNo}" Width="65"/>
2026-05-20 13:33:15 +08:00
<DataGridTemplateColumn Header="组内序号" Width="80">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding SequenceNo}" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSummaryRow}" Value="True">
<Setter Property="Text" Value=""/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="硬度值(N)" Width="95">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value, StringFormat=F1}" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSummaryRow}" Value="True">
<Setter Property="Text" Value=""/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="与平均值偏差(N)" Width="125">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding DeviationFromAverage, StringFormat=F2}" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSummaryRow}" Value="True">
<Setter Property="Text" Value=""/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
2026-05-20 11:13:12 +08:00
<DataGridTextColumn Header="组平均值(N)" Binding="{Binding GroupAverage, StringFormat=F1}" Width="105"/>
<DataGridTextColumn Header="组平均偏差(N)" Binding="{Binding GroupAverageDeviation, StringFormat=F2}" Width="120"/>
<DataGridTextColumn Header="组RSD(%)" Binding="{Binding GroupRSD, StringFormat=F2}" Width="95"/>
2026-05-20 13:33:15 +08:00
<DataGridTemplateColumn Header="记录时间" Width="105">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding RecordedAt, StringFormat=HH:mm:ss}" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSummaryRow}" Value="True">
<Setter Property="Text" Value=""/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
2026-05-20 11:13:12 +08:00
</DataGrid.Columns>
</DataGrid>
</Grid>
</GroupBox>
2026-05-16 17:33:25 +08:00
<WrapPanel Grid.Row="2" Style="{StaticResource CommandBar}">
2026-05-18 16:02:31 +08:00
2026-05-18 17:00:21 +08:00
<Button Command="{Binding StartHardnessCommand}" Content="开始" Style="{StaticResource StartButton}"/>
<Button Command="{Binding StopHardnessCommand}" Content="停止" Style="{StaticResource StopButton}"/>
2026-05-18 16:02:31 +08:00
<Button Command="{Binding HardnessResetCommand}" Content="复位" Style="{StaticResource ResetButton}"/>
2026-05-20 09:45:34 +08:00
<Button Command="{Binding ClearHardnessRecordsCommand}" Content="清空记录" Style="{StaticResource SecondaryButton}"/>
2026-05-06 16:41:32 +08:00
</WrapPanel>
</Grid>
2026-05-20 14:27:16 +08:00
</ScrollViewer>
2026-05-05 15:31:24 +08:00
</TabItem>
2026-05-18 16:07:46 +08:00
<TabItem Header="脆碎度">
2026-05-16 17:33:25 +08:00
<Grid Margin="4,14,4,4">
2026-05-06 16:41:32 +08:00
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
2026-05-16 17:33:25 +08:00
<RowDefinition Height="*"/>
2026-05-06 16:41:32 +08:00
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
2026-05-18 15:18:28 +08:00
<GroupBox Header="当前参数" Grid.Row="0">
2026-05-16 17:33:25 +08:00
<WrapPanel>
<StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="转速设置(r/min)" Style="{StaticResource ParamLabel}"/>
2026-05-18 15:18:28 +08:00
<TextBlock Text="{Binding FriabilityTargetRpm, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
2026-05-06 16:41:32 +08:00
</StackPanel>
2026-05-16 17:33:25 +08:00
<StackPanel Style="{StaticResource ParamRow}">
2026-05-18 14:06:04 +08:00
<TextBlock Text="试验转数(转)" Style="{StaticResource ParamLabel}"/>
2026-05-18 15:18:28 +08:00
<TextBlock Text="{Binding FriabilityTargetRounds}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
2026-05-18 14:06:04 +08:00
</StackPanel>
<StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="失重率限度(%)" Style="{StaticResource ParamLabel}"/>
<TextBlock Text="{Binding FriabilityMaxLossPercent, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
2026-05-06 16:41:32 +08:00
</StackPanel>
2026-05-16 17:33:25 +08:00
</WrapPanel>
2026-05-06 16:41:32 +08:00
</GroupBox>
2026-05-18 14:06:04 +08:00
<GroupBox Header="测试结果" Grid.Row="1">
2026-05-20 14:51:00 +08:00
<UniformGrid Columns="4">
<Border Style="{StaticResource MetricCard}">
<StackPanel>
<TextBlock Text="实时圈数" Style="{StaticResource MetricLabel}"/>
2026-05-20 15:21:03 +08:00
<TextBlock Text="{Binding FriabilityRealtimeRounds, StringFormat=F1}" Foreground="#1565C0" Style="{StaticResource MetricValue}"/>
2026-05-20 14:51:00 +08:00
</StackPanel>
</Border>
2026-05-16 17:33:25 +08:00
<Border Style="{StaticResource MetricCard}">
<StackPanel>
2026-05-18 18:54:32 +08:00
<TextBlock Text="脆碎前质量(g)" Style="{StaticResource MetricLabel}"/>
<TextBox Text="{Binding WeightBefore, Mode=TwoWay, UpdateSourceTrigger=LostFocus, StringFormat=F3}"
Width="150"
FontSize="22"
FontWeight="SemiBold"
HorizontalContentAlignment="Center"
Margin="0,8,0,0"/>
2026-05-16 17:33:25 +08:00
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
2026-05-18 18:54:32 +08:00
<TextBlock Text="脆碎后质量(g)" Style="{StaticResource MetricLabel}"/>
<TextBox Text="{Binding WeightAfter, Mode=TwoWay, UpdateSourceTrigger=LostFocus, StringFormat=F3}"
Width="150"
FontSize="22"
FontWeight="SemiBold"
HorizontalContentAlignment="Center"
Margin="0,8,0,0"/>
2026-05-18 14:06:04 +08:00
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
2026-05-20 11:13:12 +08:00
<TextBlock Text="失重率(%)" Style="{StaticResource MetricLabel}"/>
2026-05-18 14:06:04 +08:00
<TextBlock Text="{Binding LossPercent, StringFormat=F2}" Foreground="#1565C0" Style="{StaticResource MetricValue}"/>
2026-05-16 17:33:25 +08:00
</StackPanel>
</Border>
2026-05-06 16:41:32 +08:00
</UniformGrid>
</GroupBox>
2026-05-16 17:33:25 +08:00
<WrapPanel Grid.Row="2" Style="{StaticResource CommandBar}">
2026-05-18 09:47:22 +08:00
<Button Command="{Binding StartFriabilityCommand}" Content="开始" Style="{StaticResource StartButton}"/>
<Button Command="{Binding StopFriabilityCommand}" Content="停止" Style="{StaticResource StopButton}"/>
2026-05-20 15:44:00 +08:00
<Button Command="{Binding SaveFriabilityResultCommand}" Content="保存记录" Style="{StaticResource SecondaryButton}" IsEnabled="{Binding CanSaveFriabilityResult}"/>
2026-05-19 15:01:02 +08:00
<!--<Button Command="{Binding ResetFriabilityCommand}" Content="复位" Style="{StaticResource ResetButton}"/>-->
2026-05-06 16:41:32 +08:00
</WrapPanel>
</Grid>
2026-05-05 15:31:24 +08:00
</TabItem>
2026-05-06 16:41:32 +08:00
<TabItem Header="溶出度">
2026-05-16 17:33:25 +08:00
<Grid Margin="4,14,4,4">
2026-05-06 16:41:32 +08:00
<Grid.RowDefinitions>
2026-05-16 17:33:25 +08:00
<RowDefinition Height="*"/>
2026-05-06 16:41:32 +08:00
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
2026-05-16 17:33:25 +08:00
<ScrollViewer Grid.Row="0" VerticalScrollBarVisibility="Auto">
2026-05-06 16:41:32 +08:00
<Grid>
<Grid.RowDefinitions>
2026-05-16 17:33:25 +08:00
<RowDefinition Height="Auto"/>
2026-05-06 16:41:32 +08:00
<RowDefinition Height="Auto"/>
2026-05-16 16:58:57 +08:00
<RowDefinition Height="Auto"/>
2026-05-18 14:06:04 +08:00
<RowDefinition Height="Auto"/>
2026-05-20 10:16:02 +08:00
<RowDefinition Height="Auto"/>
2026-05-06 16:41:32 +08:00
</Grid.RowDefinitions>
2026-05-16 17:33:25 +08:00
2026-05-18 15:18:28 +08:00
<GroupBox Header="当前参数" Grid.Row="0">
2026-05-16 17:33:25 +08:00
<WrapPanel>
<StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="溶出1时间(min)" Style="{StaticResource ParamLabel}"/>
2026-05-18 15:18:28 +08:00
<TextBlock Text="{Binding Dissolution1TimeMin}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
2026-05-16 17:33:25 +08:00
</StackPanel>
<StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="溶出2时间(min)" Style="{StaticResource ParamLabel}"/>
2026-05-18 15:18:28 +08:00
<TextBlock Text="{Binding Dissolution2TimeMin}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
2026-05-16 17:33:25 +08:00
</StackPanel>
2026-05-18 09:47:22 +08:00
<StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="溶出1间隔取样时间(min)" Style="{StaticResource ParamLabel}"/>
2026-05-19 20:06:51 +08:00
<TextBlock Text="{Binding Dissolution1SampleIntervalMin, StringFormat=F0}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
2026-05-18 09:47:22 +08:00
</StackPanel>
<StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="溶出2间隔取样时间(min)" Style="{StaticResource ParamLabel}"/>
2026-05-19 20:06:51 +08:00
<TextBlock Text="{Binding Dissolution2SampleIntervalMin, StringFormat=F0}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
2026-05-18 15:18:28 +08:00
</StackPanel>
2026-05-20 11:19:43 +08:00
<StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="介质温度(℃)" Style="{StaticResource ParamLabel}"/>
<TextBlock Text="{Binding DisintegrationTemp, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
</StackPanel>
2026-05-16 17:33:25 +08:00
</WrapPanel>
</GroupBox>
2026-05-20 10:16:02 +08:00
<GroupBox Header="运行计时" Grid.Row="1">
<UniformGrid Columns="4">
<Border Style="{StaticResource MetricCard}">
<StackPanel>
<TextBlock Text="溶出1累计(min)" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding Dissolution1ElapsedTime, StringFormat=F1}" Foreground="#2E7D32" Style="{StaticResource MetricValue}"/>
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
<TextBlock Text="溶出1倒计时(min)" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding Dissolution1Countdown, StringFormat=F1}" Foreground="#2E7D32" Style="{StaticResource MetricValue}"/>
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
<TextBlock Text="溶出2累计(min)" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding Dissolution2ElapsedTime, StringFormat=F1}" Foreground="#1565C0" Style="{StaticResource MetricValue}"/>
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
<TextBlock Text="溶出2倒计时(min)" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding Dissolution2Countdown, StringFormat=F1}" Foreground="#1565C0" Style="{StaticResource MetricValue}"/>
</StackPanel>
</Border>
</UniformGrid>
</GroupBox>
<GroupBox Header="测试结果" Grid.Row="2">
2026-05-18 14:06:04 +08:00
<UniformGrid Columns="4">
2026-05-16 17:33:25 +08:00
<Border Style="{StaticResource MetricCard}">
<StackPanel>
2026-05-18 14:06:04 +08:00
<TextBlock Text="溶出1溶出度(%)" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding Dissolution1Percent, StringFormat=F1}" Foreground="#2E7D32" Style="{StaticResource MetricValue}"/>
2026-05-16 17:33:25 +08:00
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
2026-05-18 14:06:04 +08:00
<TextBlock Text="溶出2溶出度(%)" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding Dissolution2Percent, StringFormat=F1}" Foreground="#1565C0" Style="{StaticResource MetricValue}"/>
2026-05-16 17:33:25 +08:00
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
2026-05-18 14:06:04 +08:00
<TextBlock Text="溶出1 R²" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding Dissolution1RSquared, StringFormat=F4}" Foreground="#2E7D32" Style="{StaticResource MetricValue}"/>
2026-05-16 17:33:25 +08:00
</StackPanel>
</Border>
<Border Style="{StaticResource MetricCard}">
<StackPanel>
2026-05-18 14:06:04 +08:00
<TextBlock Text="溶出2 R²" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding Dissolution2RSquared, StringFormat=F4}" Foreground="#1565C0" Style="{StaticResource MetricValue}"/>
2026-05-16 17:33:25 +08:00
</StackPanel>
</Border>
</UniformGrid>
</GroupBox>
2026-05-20 10:16:02 +08:00
<GroupBox Header="溶出双曲线和R²值" Grid.Row="3">
2026-05-16 17:33:25 +08:00
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="240"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<oxy:PlotView Grid.Row="0" Model="{Binding DissolutionPlotModel}" Margin="4"/>
<WrapPanel Grid.Row="1" Margin="4,8,4,2">
<TextBlock Text="{Binding Dissolution1RSquared, StringFormat='溶出1 R² = {0:F4}'}"
FontSize="15"
FontWeight="SemiBold"
Foreground="#2E7D32"
Margin="0,0,28,0"/>
<TextBlock Text="{Binding Dissolution2RSquared, StringFormat='溶出2 R² = {0:F4}'}"
FontSize="15"
FontWeight="SemiBold"
Foreground="#1565C0"/>
</WrapPanel>
<TextBlock Grid.Row="2"
Text="{Binding DissolutionCurveStatus}"
Foreground="#C62828"
FontWeight="SemiBold"
Margin="4,4,4,0"
TextWrapping="Wrap"/>
</Grid>
</GroupBox>
2026-05-18 14:06:04 +08:00
2026-05-20 10:16:02 +08:00
<GroupBox Header="取样记录" Grid.Row="4">
2026-05-18 14:06:04 +08:00
<DataGrid ItemsSource="{Binding DissolutionSamplePoints}"
AutoGenerateColumns="False"
HeadersVisibility="Column"
CanUserAddRows="False"
CanUserDeleteRows="False"
IsReadOnly="True"
MinHeight="150"
MaxHeight="240"
RowHeight="34"
FontSize="14"
GridLinesVisibility="Horizontal">
<DataGrid.Columns>
<DataGridTextColumn Header="通道" Binding="{Binding ChannelName}" Width="90"/>
2026-05-18 17:18:56 +08:00
<DataGridTextColumn Header="计划时间(min)" Binding="{Binding ScheduledTimeMin, StringFormat=F1}" Width="120"/>
2026-05-18 14:06:04 +08:00
<DataGridTextColumn Header="实际时间(min)" Binding="{Binding ActualTimeMin, StringFormat=F2}" Width="120"/>
<DataGridTextColumn Header="溶出度(%)" Binding="{Binding Percent, StringFormat=F2}" Width="120"/>
<DataGridTextColumn Header="记录时间" Binding="{Binding RecordedAt, StringFormat=HH:mm:ss}" Width="110"/>
<DataGridTextColumn Header="状态" Binding="{Binding Status}" Width="90"/>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
2026-05-05 15:31:24 +08:00
</Grid>
2026-05-16 17:33:25 +08:00
</ScrollViewer>
2026-05-06 16:41:32 +08:00
2026-05-16 17:33:25 +08:00
<WrapPanel Grid.Row="1" Style="{StaticResource CommandBar}">
<Button Command="{Binding StartDissolution1Command}" Content="溶出1开始" Style="{StaticResource StartButton}"/>
<Button Command="{Binding StopDissolution1Command}" Content="溶出1停止" Style="{StaticResource StopButton}"/>
2026-05-19 15:01:02 +08:00
<!--<Button Command="{Binding ResetDissolution1Command}" Content="溶出1复位" Style="{StaticResource ResetButton}"/>-->
2026-05-16 17:33:25 +08:00
<Button Command="{Binding StartDissolution2Command}" Content="溶出2开始" Style="{StaticResource StartButton}"/>
<Button Command="{Binding StopDissolution2Command}" Content="溶出2停止" Style="{StaticResource StopButton}"/>
2026-05-19 15:01:02 +08:00
<!--<Button Command="{Binding ResetDissolution2Command}" Content="溶出2复位" Style="{StaticResource ResetButton}"/>-->
2026-05-06 16:41:32 +08:00
</WrapPanel>
</Grid>
</TabItem>
2026-05-16 17:33:25 +08:00
2026-05-19 09:51:58 +08:00
<TabItem Header="崩解时限">
2026-05-16 17:33:25 +08:00
<Grid Margin="4,14,4,4">
2026-05-06 16:41:32 +08:00
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
2026-05-16 17:33:25 +08:00
<RowDefinition Height="*"/>
2026-05-06 16:41:32 +08:00
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
2026-05-18 15:18:28 +08:00
<GroupBox Header="当前参数" Grid.Row="0">
2026-05-16 17:33:25 +08:00
<WrapPanel>
<StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="崩解时间(min)" Style="{StaticResource ParamLabel}"/>
2026-05-18 15:18:28 +08:00
<TextBlock Text="{Binding DisintegrationTimeMin, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
</StackPanel>
<StackPanel Style="{StaticResource ParamRow}">
<TextBlock Text="介质温度(℃)" Style="{StaticResource ParamLabel}"/>
<TextBlock Text="{Binding DisintegrationTemp, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
2026-05-06 16:41:32 +08:00
</StackPanel>
2026-05-16 17:33:25 +08:00
</WrapPanel>
2026-05-06 16:41:32 +08:00
</GroupBox>
2026-05-18 14:06:04 +08:00
<GroupBox Header="测试结果" Grid.Row="1">
2026-05-20 11:13:12 +08:00
<UniformGrid Columns="1">
2026-05-16 17:33:25 +08:00
<Border Style="{StaticResource MetricCard}">
<StackPanel>
2026-05-20 11:13:12 +08:00
<TextBlock Text="实际崩解时间(秒)" Style="{StaticResource MetricLabel}"/>
<TextBox Text="{Binding DisintegrationActualSecondsText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Width="160"
Height="46"
Margin="0,8,0,0"
HorizontalAlignment="Center"
IsEnabled="{Binding CanSaveDisintegrationResult}"
TextAlignment="Center"
FontSize="26"
FontWeight="SemiBold"
Foreground="{StaticResource ValueBrush}"/>
2026-05-16 17:33:25 +08:00
</StackPanel>
</Border>
2026-05-19 16:42:23 +08:00
<!--<Border Style="{StaticResource MetricCard}">
2026-05-16 17:33:25 +08:00
<StackPanel>
<TextBlock Text="剩余未崩解管数" Style="{StaticResource MetricLabel}"/>
<TextBlock Text="{Binding RemainingTubes}" Foreground="#C62828" Style="{StaticResource MetricValue}"/>
</StackPanel>
2026-05-19 16:42:23 +08:00
</Border>-->
2026-05-06 16:41:32 +08:00
</UniformGrid>
</GroupBox>
2026-05-16 17:33:25 +08:00
<WrapPanel Grid.Row="2" Style="{StaticResource CommandBar}">
2026-05-18 09:47:22 +08:00
<Button Command="{Binding StartDisintegrationCommand}" Content="开始" Style="{StaticResource StartButton}"/>
<Button Command="{Binding StopDisintegrationCommand}" Content="停止" Style="{StaticResource StopButton}"/>
2026-05-20 11:13:12 +08:00
<Button Command="{Binding SaveDisintegrationResultCommand}" Content="保存记录" Style="{StaticResource SecondaryButton}" IsEnabled="{Binding CanSaveDisintegrationResult}"/>
2026-05-19 15:01:02 +08:00
<!--<Button Command="{Binding ResetDisintegrationCommand}" Content="复位" Style="{StaticResource ResetButton}"/>-->
2026-05-06 16:41:32 +08:00
</WrapPanel>
</Grid>
2026-05-05 15:31:24 +08:00
</TabItem>
</TabControl>
2026-05-16 17:33:25 +08:00
</Grid>
2026-05-05 15:31:24 +08:00
</Border>
</DataTemplate>
</Window.Resources>
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
2026-05-16 16:58:57 +08:00
<Border Background="#0F3D68" CornerRadius="6" Margin="0,0,0,8" Padding="12,10">
2026-05-05 15:31:24 +08:00
<Grid>
2026-05-18 09:47:22 +08:00
<TextBlock Text="片剂四用仪 硬度 · 脆碎度 · 溶出 · 崩解"
2026-05-16 17:33:25 +08:00
FontSize="22"
FontWeight="Bold"
Foreground="White"
VerticalAlignment="Center"/>
2026-05-06 16:41:32 +08:00
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
2026-05-18 14:33:49 +08:00
<Button Command="{Binding OpenSettingsCommand}" Content="参数设置" Style="{StaticResource ActionButton}"/>
2026-05-16 16:58:57 +08:00
<Button Command="{Binding OpenHistoryCommand}" Content="历史记录" Style="{StaticResource ActionButton}"/>
<Button Command="{Binding ExportAllCommand}" Content="导出报告" Style="{StaticResource ActionButton}"/>
2026-05-05 15:31:24 +08:00
</StackPanel>
</Grid>
</Border>
2026-05-16 17:33:25 +08:00
<ContentControl Grid.Row="1"
Margin="0,0,0,16"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
2026-05-16 16:58:57 +08:00
Content="{Binding Tester}"
ContentTemplate="{StaticResource StationCardTemplate}"/>
2026-05-05 15:31:24 +08:00
2026-05-16 17:56:45 +08:00
<Border Grid.Row="2"
Background="#FFFFFF"
BorderBrush="#DCE5EE"
BorderThickness="1"
CornerRadius="6"
Padding="8">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Style="{StaticResource FooterItem}" Margin="0,0,8,0">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<Ellipse Width="10"
Height="10"
Fill="{Binding PlcStatus, Converter={StaticResource StatusColorConverter}}"
Margin="0,0,8,0"/>
<TextBlock Text="PLC" Style="{StaticResource FooterLabel}" Margin="0,0,8,0"/>
<TextBlock Text="{Binding PlcStatus}" Style="{StaticResource FooterValue}"/>
</StackPanel>
</Border>
<Border Grid.Column="1" Style="{StaticResource FooterItem}" Margin="0,0,8,0">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="当前时间" Style="{StaticResource FooterLabel}" Margin="0,0,8,0"/>
<TextBlock Text="{Binding CurrentTime}" Style="{StaticResource FooterValue}"/>
</StackPanel>
</Border>
<Border Grid.Column="2" Style="{StaticResource FooterItem}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="报警"
Style="{StaticResource FooterLabel}"
Foreground="#B33A3A"
Margin="0,0,8,0"/>
<TextBlock Grid.Column="1"
Text="{Binding GlobalAlarm}"
Foreground="#C62828"
FontSize="14"
FontWeight="SemiBold"
VerticalAlignment="Center"
TextTrimming="CharacterEllipsis"/>
</Grid>
</Border>
</Grid>
</Border>
2026-05-05 15:31:24 +08:00
</Grid>
2026-05-16 16:58:57 +08:00
</Window>