922 lines
88 KiB
XML
922 lines
88 KiB
XML
<Window x:Class="Cardiopulmonarybypasssystems.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:models="clr-namespace:Cardiopulmonarybypasssystems.Models"
|
|
xmlns:converters="clr-namespace:Cardiopulmonarybypasssystems.Converters"
|
|
mc:Ignorable="d"
|
|
Title="心肺转流检测"
|
|
Width="1024"
|
|
Height="800"
|
|
WindowState="Maximized"
|
|
WindowStartupLocation="CenterScreen">
|
|
<Window.Resources>
|
|
<converters:TrendPointCollectionConverter x:Key="TrendPointCollectionConverter" />
|
|
</Window.Resources>
|
|
<Grid Margin="12">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="12" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<Border Grid.Row="0" Padding="18" CornerRadius="22" Background="{StaticResource HeroBrush}">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
<StackPanel>
|
|
<TextBlock Text="{Binding PageTitle}" FontSize="28" FontWeight="Bold" Foreground="White" TextWrapping="Wrap" />
|
|
<TextBlock Margin="0,8,0,0" Foreground="#EFFAFC" FontSize="15" TextWrapping="Wrap"
|
|
Text="再循环率由实时流量传感器计算,其他结果由人工填写,检测完成后导出报表。" />
|
|
</StackPanel>
|
|
<StackPanel Grid.Row="1" Margin="0,12,0,0">
|
|
<WrapPanel>
|
|
<Button Command="{Binding ToggleAcquisitionCommand}" Content="采集" Background="#FFFFFFFF" Foreground="{StaticResource HeaderBrush}" />
|
|
<Button Command="{Binding AcknowledgeAlarmCommand}" Content="消警" Background="#33FFFFFF" />
|
|
<Button Command="{Binding CompleteDetectionCommand}" Content="完成检测" Background="#FFF0B145" />
|
|
<Button Command="{Binding ExportReportCommand}" Content="导出 PDF" Background="#FFEA7E3C" />
|
|
</WrapPanel>
|
|
<TextBlock Margin="0,2,0,0" Foreground="#EFFAFC" FontSize="14" Text="{Binding ExportStateText}" TextWrapping="Wrap" />
|
|
<TextBlock Margin="0,6,0,0" Foreground="#EFFAFC" FontSize="14" Text="{Binding LatestAction}" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<Grid Grid.Row="2">
|
|
<Border Style="{StaticResource CardBorderStyle}" Margin="0">
|
|
<TabControl>
|
|
<TabItem Header="项目检测">
|
|
<ScrollViewer Margin="0,6,0,0" VerticalScrollBarVisibility="Auto" CanContentScroll="False">
|
|
<StackPanel>
|
|
<Border Style="{StaticResource CardBorderStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="项目检索与采集策略" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="根据 YY 0948-2025 将项目区分为“实时监控”“实时显示+手动录入”和“手动录入”三类。" TextWrapping="Wrap" />
|
|
<Grid Margin="0,10,0,0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="Auto" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBox Grid.Column="0" Margin="0" MinHeight="40" Text="{Binding ItemSearchText, UpdateSourceTrigger=PropertyChanged}" />
|
|
<Button Grid.Column="1" Margin="8,0,0,0" MinWidth="90" Padding="14,8" Command="{Binding ClearItemSearchCommand}" Content="清空" Background="#FF6B8791" />
|
|
</Grid>
|
|
<Grid Margin="0,8,0,0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="220" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="快速筛选" />
|
|
<ComboBox Grid.Column="1"
|
|
Margin="12,0,0,8"
|
|
ItemsSource="{Binding ItemFilterOptions}"
|
|
SelectedItem="{Binding ActiveFilter, Mode=TwoWay}" />
|
|
</Grid>
|
|
<TextBlock Margin="0,8,0,0" Style="{StaticResource CaptionStyle}" Text="{Binding FilteredItemSummary}" />
|
|
<TextBlock Margin="0,8,0,0" FontSize="14" Foreground="{StaticResource WarningBrush}" Text="未匹配到项目。">
|
|
<TextBlock.Style>
|
|
<Style TargetType="TextBlock">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding HasFilteredItems}" Value="False">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</TextBlock.Style>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<UniformGrid Columns="3" Margin="0,0,0,12">
|
|
<Border Margin="0,0,8,8" Padding="14" Background="#FFE7F5F3" CornerRadius="14">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="实时监控" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="26" Text="{Binding RealtimeMonitorCount}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="压力降、再循环自动同步" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Margin="0,0,8,8" Padding="14" Background="#FFEAF0FB" CornerRadius="14">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="实时显示+手动录入" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="26" Text="{Binding RealtimeAssistCount}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="抗塌陷、血液相关指标用于辅助判定" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Margin="0,0,0,8" Padding="14" Background="#FFFDF0E5" CornerRadius="14">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="手动录入" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="26" Text="{Binding ManualEntryCount}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="生物、化学、残留、清洁度等按原始记录手填" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
</UniformGrid>
|
|
|
|
<Border Style="{StaticResource CardBorderStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="项目清单" />
|
|
<DataGrid Margin="0,4,0,0"
|
|
ItemsSource="{Binding FilteredItemsView}"
|
|
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
|
|
CanUserSortColumns="False"
|
|
IsReadOnly="True"
|
|
CanUserAddRows="False"
|
|
CanUserDeleteRows="False"
|
|
SelectionMode="Single"
|
|
SelectionUnit="FullRow"
|
|
Height="280"
|
|
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
|
VirtualizingPanel.ScrollUnit="Pixel">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="项目" Binding="{Binding Item}" Width="180" />
|
|
<DataGridTemplateColumn Header="采集方式" Width="170">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<Border Margin="0,4" Padding="10,4" Background="{Binding CaptureModeBadgeBackground}" CornerRadius="999">
|
|
<TextBlock HorizontalAlignment="Center" Foreground="{Binding CaptureModeBadgeForeground}" FontWeight="Bold" Text="{Binding CaptureModeText}" />
|
|
</Border>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
</DataGridTemplateColumn>
|
|
<DataGridTextColumn Header="当前状态" Binding="{Binding StatusText}" Width="90" />
|
|
<DataGridTemplateColumn Header="完成情况" Width="130">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<StackPanel Margin="0,2">
|
|
<TextBlock FontWeight="Bold" Text="{Binding CompletionText}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="{Binding CompletionHint}" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
</DataGridTemplateColumn>
|
|
<DataGridTextColumn Header="结果/说明" Binding="{Binding Measured}" Width="*" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<UniformGrid Columns="4" Margin="0,0,0,12">
|
|
<Border Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="当前项目" />
|
|
<TextBlock FontSize="18" FontWeight="Bold" Text="{Binding SelectedItemTitle}" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="采集方式" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding SelectedItemCaptureModeText}" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="状态" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding SelectedItemStatusText}" />
|
|
<TextBlock Margin="0,6,0,0" Style="{StaticResource CaptionStyle}" Text="{Binding SelectedItem.CompletionHint}" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Margin="0,0,0,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="记录时间" />
|
|
<TextBlock FontSize="16" FontWeight="Bold" Text="{Binding SelectedItem.RecordedAtText}" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
</UniformGrid>
|
|
|
|
<Border Style="{StaticResource CardBorderStyle}" Margin="0">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="项目详情与结果填写" />
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="1.12*" />
|
|
<ColumnDefinition Width="16" />
|
|
<ColumnDefinition Width="0.88*" />
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Grid.Column="0">
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="类别" />
|
|
<TextBlock FontSize="16" FontWeight="SemiBold" Margin="0,0,0,10" Text="{Binding SelectedItem.Category}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="判定要求" />
|
|
<TextBlock FontSize="15" Margin="0,0,0,10" TextWrapping="Wrap" Text="{Binding SelectedItem.AcceptanceCriteria}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="检测方法" />
|
|
<TextBlock FontSize="15" Margin="0,0,0,10" TextWrapping="Wrap" Text="{Binding SelectedItem.TestMethod}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="记录要点" />
|
|
<TextBlock FontSize="15" Margin="0,0,0,10" TextWrapping="Wrap" Text="{Binding SelectedItem.RecordFocus}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="数据来源" />
|
|
<TextBlock FontSize="15" Margin="0,0,0,10" TextWrapping="Wrap" Text="{Binding SelectedItemMeasurementSource}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="实时数据预览" />
|
|
<Border Padding="12" Background="#FFF4F8FA" CornerRadius="14" Margin="0,0,0,10">
|
|
<StackPanel>
|
|
<TextBlock FontSize="16" FontWeight="SemiBold" Text="{Binding SelectedItemLiveDisplay}" TextWrapping="Wrap" />
|
|
<TextBlock Margin="0,6,0,0" Style="{StaticResource CaptionStyle}" Text="{Binding SelectedItemLiveHint}" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="2">
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="填写说明" />
|
|
<TextBlock Margin="0,0,0,6" Foreground="{StaticResource MutedTextBrush}" FontSize="13" Text="{Binding RealtimeMeasurementHint}" TextWrapping="Wrap" />
|
|
<Border Margin="0,0,0,8" Padding="12" Background="#FFF8F4EA" CornerRadius="14">
|
|
<StackPanel>
|
|
<StackPanel.Style>
|
|
<Style TargetType="StackPanel">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding IsPressureDropSelected}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</StackPanel.Style>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="压力降三点采样" />
|
|
<TextBlock FontSize="13" Text="{Binding PressureDropFlowPointDisplay}" TextWrapping="Wrap" />
|
|
<WrapPanel Margin="0,6,0,0">
|
|
<TextBlock VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="声明限值 mmHg" />
|
|
<TextBox Width="58" Margin="8,0,0,0" Text="{Binding PressureDropLimit50, UpdateSourceTrigger=PropertyChanged}" />
|
|
<TextBox Width="58" Margin="8,0,0,0" Text="{Binding PressureDropLimit75, UpdateSourceTrigger=PropertyChanged}" />
|
|
<TextBox Width="58" Margin="8,0,0,0" Text="{Binding PressureDropLimit100, UpdateSourceTrigger=PropertyChanged}" />
|
|
</WrapPanel>
|
|
<TextBlock Margin="0,4,0,0" FontSize="13" Text="{Binding PressureDropLimitDisplay}" TextWrapping="Wrap" />
|
|
<TextBlock Margin="0,4,0,0" FontSize="13" Text="{Binding PressureDropSamplingSummary}" TextWrapping="Wrap" />
|
|
<WrapPanel Margin="0,8,0,0">
|
|
<Button Command="{Binding CapturePressureDrop50Command}" Content="采集 50%" Background="#FF4D8C72" />
|
|
<Button Command="{Binding CapturePressureDrop75Command}" Content="采集 75%" Background="#FF4D8C72" />
|
|
<Button Command="{Binding CapturePressureDrop100Command}" Content="采集 100%" Background="#FF4D8C72" />
|
|
</WrapPanel>
|
|
<DataGrid Margin="0,8,0,0"
|
|
AutoGenerateColumns="False"
|
|
CanUserAddRows="False"
|
|
CanUserDeleteRows="False"
|
|
HeadersVisibility="Column"
|
|
ItemsSource="{Binding PressureDropEntries}">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="流量点" Binding="{Binding Label}" IsReadOnly="True" Width="55" />
|
|
<DataGridTextColumn Header="目标 L/min" Binding="{Binding TargetFlow, StringFormat={}{0:F2}}" IsReadOnly="True" Width="86" />
|
|
<DataGridTextColumn Header="实际主泵" Binding="{Binding ActualPumpFlow, StringFormat={}{0:F2}}" IsReadOnly="True" Width="82" />
|
|
<DataGridTextColumn Header="近端" Binding="{Binding ProximalPressure, StringFormat={}{0:F1}}" IsReadOnly="True" Width="70" />
|
|
<DataGridTextColumn Header="远端" Binding="{Binding DistalPressure, StringFormat={}{0:F1}}" IsReadOnly="True" Width="70" />
|
|
<DataGridTextColumn Header="ΔP" Binding="{Binding DeltaPressureText}" IsReadOnly="True" Width="65" />
|
|
<DataGridTextColumn Header="采样时间" Binding="{Binding SampledAtText}" IsReadOnly="True" Width="78" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Margin="0,0,0,8" Padding="12" Background="#FFF3F7EF" CornerRadius="14">
|
|
<StackPanel>
|
|
<StackPanel.Style>
|
|
<Style TargetType="StackPanel">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding IsKinkResistanceSelected}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</StackPanel.Style>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="抗扭结标准采样" />
|
|
<TextBlock FontSize="13" Text="{Binding KinkResistanceFlowPointDisplay}" TextWrapping="Wrap" />
|
|
<TextBlock Margin="0,4,0,0" FontSize="13" Text="{Binding KinkResistanceMandrelDiameterDisplay}" TextWrapping="Wrap" />
|
|
<WrapPanel Margin="0,6,0,0">
|
|
<TextBlock VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="最小流量 L/min" />
|
|
<TextBox Width="64" Margin="8,0,0,0" Text="{Binding KinkResistanceMinimumFlow, UpdateSourceTrigger=PropertyChanged}" />
|
|
<TextBlock Margin="12,0,0,0" VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="外径 mm" />
|
|
<TextBox Width="64" Margin="8,0,0,0" Text="{Binding KinkResistanceOuterDiameter, UpdateSourceTrigger=PropertyChanged}" />
|
|
</WrapPanel>
|
|
<TextBlock Margin="0,4,0,0" FontSize="13" Text="{Binding KinkResistanceSamplingSummary}" TextWrapping="Wrap" />
|
|
<WrapPanel Margin="0,8,0,0">
|
|
<Button Command="{Binding CaptureKinkResistanceMaxBaselineCommand}" Content="采集最大 L0" Background="#FF4D8C72" />
|
|
<Button Command="{Binding CaptureKinkResistanceMaxKinkedCommand}" Content="采集最大 L1" Background="#FF7DA65A" />
|
|
<Button Command="{Binding CaptureKinkResistanceMinBaselineCommand}" Content="采集最小 L0" Background="#FF4D8C72" />
|
|
<Button Command="{Binding CaptureKinkResistanceMinKinkedCommand}" Content="采集最小 L1" Background="#FF7DA65A" />
|
|
</WrapPanel>
|
|
<DataGrid Margin="0,8,0,0"
|
|
AutoGenerateColumns="False"
|
|
CanUserAddRows="False"
|
|
CanUserDeleteRows="False"
|
|
HeadersVisibility="Column"
|
|
ItemsSource="{Binding KinkResistanceEntries}">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="流量点" Binding="{Binding Label}" IsReadOnly="True" Width="74" />
|
|
<DataGridTextColumn Header="目标 L/min" Binding="{Binding TargetFlow, StringFormat={}{0:F2}}" IsReadOnly="True" Width="84" />
|
|
<DataGridTextColumn Header="L0" Binding="{Binding BaselineFlow, StringFormat={}{0:F2}}" IsReadOnly="True" Width="68" />
|
|
<DataGridTextColumn Header="L1" Binding="{Binding KinkedFlow, StringFormat={}{0:F2}}" IsReadOnly="True" Width="68" />
|
|
<DataGridTextColumn Header="降幅" Binding="{Binding FlowDropRateText}" IsReadOnly="True" Width="70" />
|
|
<DataGridTextColumn Header="L0时间" Binding="{Binding BaselineCapturedAtText}" IsReadOnly="True" Width="76" />
|
|
<DataGridTextColumn Header="L1时间" Binding="{Binding KinkedCapturedAtText}" IsReadOnly="True" Width="76" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Margin="0,0,0,8" Padding="12" Background="#FFF8F4EA" CornerRadius="14">
|
|
<StackPanel>
|
|
<StackPanel.Style>
|
|
<Style TargetType="StackPanel">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding IsAntiCollapseSelected}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</StackPanel.Style>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="抗塌陷快速采样" />
|
|
<WrapPanel Margin="0,6,0,0">
|
|
<TextBlock VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="允许增幅 %" />
|
|
<TextBox Width="64" Margin="8,0,0,0" Text="{Binding AntiCollapseAllowedIncreaseRate, UpdateSourceTrigger=PropertyChanged}" />
|
|
</WrapPanel>
|
|
<TextBlock FontSize="13" Text="{Binding AntiCollapseBaselineDisplay}" TextWrapping="Wrap" />
|
|
<TextBlock Margin="0,4,0,0" FontSize="13" Text="{Binding AntiCollapseComparisonDisplay}" TextWrapping="Wrap" />
|
|
<WrapPanel Margin="0,8,0,0">
|
|
<Button Command="{Binding CaptureAntiCollapseBaselineCommand}" Content="采集基线" Background="#FF6B8791" />
|
|
<Button Command="{Binding CaptureAntiCollapseComparisonCommand}" Content="采集负压比较" Background="#FFE0A14A" />
|
|
</WrapPanel>
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Margin="0,0,0,8" Padding="12" Background="#FFEFF4FB" CornerRadius="14">
|
|
<StackPanel>
|
|
<StackPanel.Style>
|
|
<Style TargetType="StackPanel">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding IsRecirculationSelected}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</StackPanel.Style>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="再循环标准采样" />
|
|
<TextBlock FontSize="13" Text="{Binding RecirculationFlowPointDisplay}" TextWrapping="Wrap" />
|
|
<WrapPanel Margin="0,6,0,0">
|
|
<TextBlock VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="R 限值 %" />
|
|
<TextBox Width="64" Margin="8,0,0,0" Text="{Binding RecirculationAllowedLimit, UpdateSourceTrigger=PropertyChanged}" />
|
|
</WrapPanel>
|
|
<TextBlock Margin="0,4,0,0" FontSize="13" Text="{Binding RecirculationLimitDisplay}" TextWrapping="Wrap" />
|
|
<TextBlock Margin="0,4,0,0" FontSize="13" Text="{Binding RecirculationSamplingSummary}" TextWrapping="Wrap" />
|
|
<WrapPanel Margin="0,8,0,0">
|
|
<Button Command="{Binding CaptureRecirculation50Command}" Content="采集 50%" Background="#FF5F86B3" />
|
|
<Button Command="{Binding CaptureRecirculation75Command}" Content="采集 75%" Background="#FF5F86B3" />
|
|
<Button Command="{Binding CaptureRecirculation100Command}" Content="采集 100%" Background="#FF5F86B3" />
|
|
</WrapPanel>
|
|
<DataGrid Margin="0,8,0,0"
|
|
AutoGenerateColumns="False"
|
|
CanUserAddRows="False"
|
|
CanUserDeleteRows="False"
|
|
HeadersVisibility="Column"
|
|
ItemsSource="{Binding RecirculationEntries}">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="流量点" Binding="{Binding Label}" IsReadOnly="True" Width="55" />
|
|
<DataGridTextColumn Header="目标 L/min" Binding="{Binding TargetFlow, StringFormat={}{0:F2}}" IsReadOnly="True" Width="86" />
|
|
<DataGridTextColumn Header="实际主泵" Binding="{Binding ActualPumpFlow, StringFormat={}{0:F2}}" IsReadOnly="True" Width="82" />
|
|
<DataGridTextColumn Header="C1(D)" Binding="{Binding ConcentrationC1, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0:F0}}" Width="70" />
|
|
<DataGridTextColumn Header="C2(C)" Binding="{Binding ConcentrationC2, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0:F0}}" Width="70" />
|
|
<DataGridTextColumn Header="R%" Binding="{Binding RecirculationResultText}" IsReadOnly="True" Width="65" />
|
|
<DataGridTextColumn Header="采样时间" Binding="{Binding SampledAtText}" IsReadOnly="True" Width="78" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</StackPanel>
|
|
</Border>
|
|
<TextBox Text="{Binding ResultValue, UpdateSourceTrigger=PropertyChanged}" MinHeight="104" AcceptsReturn="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" IsReadOnly="{Binding SelectedItemUsesRealtimeValue}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="判定" />
|
|
<ComboBox ItemsSource="{Binding ResultStatusOptions}" SelectedItem="{Binding SelectedResultStatusText, Mode=TwoWay}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="记录人" />
|
|
<TextBox Text="{Binding ResultOperator, UpdateSourceTrigger=PropertyChanged}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="复核人" />
|
|
<TextBox Text="{Binding ReviewerName, UpdateSourceTrigger=PropertyChanged}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="批准人" />
|
|
<TextBox Text="{Binding ApproverName, UpdateSourceTrigger=PropertyChanged}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="备注" />
|
|
<TextBox Text="{Binding ResultNote, UpdateSourceTrigger=PropertyChanged}" MinHeight="104" AcceptsReturn="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" IsReadOnly="{Binding SelectedItemUsesRealtimeValue}" />
|
|
</StackPanel>
|
|
</Grid>
|
|
<WrapPanel Margin="0,8,0,0">
|
|
<Button Command="{Binding SelectPreviousItemCommand}" Content="上一项" Background="#FF6B8791" />
|
|
<Button Command="{Binding SelectNextItemCommand}" Content="下一项" Background="#FF6B8791" />
|
|
<Button Command="{Binding ApplyResultCommand}" Content="保存" />
|
|
</WrapPanel>
|
|
</StackPanel>
|
|
</Border>
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
</TabItem>
|
|
|
|
<TabItem Header="实时数据">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
<StackPanel Margin="0,6,0,0">
|
|
<Border Style="{StaticResource CardBorderStyle}">
|
|
<Border.Resources>
|
|
<DataTemplate x:Key="PumpControlCardTemplate" DataType="{x:Type models:PumpControlChannel}">
|
|
<Border Width="220" Margin="0,0,10,10" Padding="14" Background="#FFF4F8FA" CornerRadius="14">
|
|
<StackPanel>
|
|
<DockPanel>
|
|
<Ellipse Width="12" Height="12" Margin="0,3,8,0" Fill="{Binding IndicatorColor}" DockPanel.Dock="Left" />
|
|
<TextBlock FontSize="16" FontWeight="SemiBold" Text="{Binding Name}" TextWrapping="Wrap" />
|
|
</DockPanel>
|
|
<TextBlock Margin="0,8,0,0" Style="{StaticResource MetricValueStyle}" FontSize="22" Text="{Binding FlowDisplay}" />
|
|
<TextBlock Margin="0,4,0,0" Style="{StaticResource CaptionStyle}" Text="{Binding StateText}" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="{Binding StateHint}" />
|
|
<Button Margin="0,10,0,0"
|
|
Command="{Binding DataContext.TogglePumpControlCommand, RelativeSource={RelativeSource AncestorType=Window}}"
|
|
CommandParameter="{Binding}"
|
|
Content="{Binding ActionText}"
|
|
Background="#FF4D8C72" />
|
|
</StackPanel>
|
|
</Border>
|
|
</DataTemplate>
|
|
</Border.Resources>
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="泵启动控制" />
|
|
<UniformGrid Columns="2" Margin="0,10,0,0">
|
|
<Border Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="压力降 / 抗塌陷" />
|
|
<ItemsControl Margin="0,8,0,0" ItemsSource="{Binding PressureDropPumpControls}" ItemTemplate="{StaticResource PumpControlCardTemplate}">
|
|
<ItemsControl.ItemsPanel>
|
|
<ItemsPanelTemplate>
|
|
<WrapPanel />
|
|
</ItemsPanelTemplate>
|
|
</ItemsControl.ItemsPanel>
|
|
</ItemsControl>
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Margin="0,0,0,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="再循环" />
|
|
<ItemsControl Margin="0,8,0,0" ItemsSource="{Binding RecirculationPumpControls}" ItemTemplate="{StaticResource PumpControlCardTemplate}">
|
|
<ItemsControl.ItemsPanel>
|
|
<ItemsPanelTemplate>
|
|
<WrapPanel />
|
|
</ItemsPanelTemplate>
|
|
</ItemsControl.ItemsPanel>
|
|
</ItemsControl>
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Margin="0,0,8,0" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="抗扭结" />
|
|
<ItemsControl Margin="0,8,0,0" ItemsSource="{Binding KinkResistancePumpControls}" ItemTemplate="{StaticResource PumpControlCardTemplate}">
|
|
<ItemsControl.ItemsPanel>
|
|
<ItemsPanelTemplate>
|
|
<WrapPanel />
|
|
</ItemsPanelTemplate>
|
|
</ItemsControl.ItemsPanel>
|
|
</ItemsControl>
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Margin="0,0,0,0" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="血细胞破坏" />
|
|
<ItemsControl Margin="0,8,0,0" ItemsSource="{Binding HemolysisPumpControls}" ItemTemplate="{StaticResource PumpControlCardTemplate}">
|
|
<ItemsControl.ItemsPanel>
|
|
<ItemsPanelTemplate>
|
|
<WrapPanel />
|
|
</ItemsPanelTemplate>
|
|
</ItemsControl.ItemsPanel>
|
|
</ItemsControl>
|
|
</StackPanel>
|
|
</Border>
|
|
</UniformGrid>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<Border Style="{StaticResource CardBorderStyle}">
|
|
<Border.Resources>
|
|
<DataTemplate x:Key="ValveControlCardTemplate" DataType="{x:Type models:ValveControlChannel}">
|
|
<Border Width="220" Margin="0,0,10,0" Padding="14" Background="#FFF4F8FA" CornerRadius="14">
|
|
<StackPanel>
|
|
<DockPanel>
|
|
<Ellipse Width="12" Height="12" Margin="0,3,8,0" Fill="{Binding IndicatorColor}" DockPanel.Dock="Left" />
|
|
<TextBlock FontSize="16" FontWeight="SemiBold" Text="{Binding Name}" TextWrapping="Wrap" />
|
|
</DockPanel>
|
|
<TextBlock Margin="0,10,0,0" Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding StateText}" />
|
|
<TextBlock Margin="0,4,0,0" Style="{StaticResource CaptionStyle}" Text="{Binding StateHint}" />
|
|
<Button Margin="0,10,0,0"
|
|
Command="{Binding DataContext.ToggleValveControlCommand, RelativeSource={RelativeSource AncestorType=Window}}"
|
|
CommandParameter="{Binding}"
|
|
Content="{Binding ActionText}"
|
|
Background="#FF4D8C72" />
|
|
</StackPanel>
|
|
</Border>
|
|
</DataTemplate>
|
|
</Border.Resources>
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="测试回路阀" />
|
|
<ItemsControl Margin="0,10,0,0" ItemsSource="{Binding ValveControls}" ItemTemplate="{StaticResource ValveControlCardTemplate}">
|
|
<ItemsControl.ItemsPanel>
|
|
<ItemsPanelTemplate>
|
|
<WrapPanel />
|
|
</ItemsPanelTemplate>
|
|
</ItemsControl.ItemsPanel>
|
|
</ItemsControl>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<Border Style="{StaticResource CardBorderStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="关键实时读数" />
|
|
<WrapPanel Margin="0,0,0,4">
|
|
<Border Width="180" Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="阶段" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding CurrentStage}" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Width="180" Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="设备状态" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding DeviceStatus}" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Width="180" Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="近端压力" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding ProximalPressureDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Width="180" Margin="0,0,0,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="远端压力" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding DistalPressureDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
</WrapPanel>
|
|
|
|
<WrapPanel>
|
|
<Border Width="180" Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="压力降/抗塌陷" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding PressureDropPumpFlowDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Width="180" Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="再循环主泵" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding RecirculationPumpFlowDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Width="180" Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="回流泵" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding ReturnFlowDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Width="180" Margin="0,0,0,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="引流泵" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding DrainageFlowDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
</WrapPanel>
|
|
|
|
<WrapPanel>
|
|
<Border Width="180" Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="抗扭结" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding KinkResistancePumpFlowDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Width="180" Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="血细胞破坏单腔引流" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding HemolysisDrainageSingleFlowDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Width="180" Margin="0,0,8,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="血细胞破坏单腔回输" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding HemolysisReturnSingleFlowDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Width="180" Margin="0,0,0,8" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="血细胞破坏双腔" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding HemolysisDualLumenFlowDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
</WrapPanel>
|
|
|
|
<WrapPanel>
|
|
<Border Width="180" Margin="0,0,8,0" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="负压辅助" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding NegativeAssistPressureDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Width="180" Margin="0,0,8,0" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="压力降 ΔP" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding DeltaPressureDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Width="180" Margin="0,0,0,0" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="再循环率" />
|
|
<TextBlock Style="{StaticResource MetricValueStyle}" FontSize="20" Text="{Binding RealtimeRecirculationDisplay}" />
|
|
</StackPanel>
|
|
</Border>
|
|
</WrapPanel>
|
|
|
|
<DockPanel Margin="0,12,0,8">
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="趋势图" />
|
|
<Button DockPanel.Dock="Right"
|
|
MinWidth="96"
|
|
Command="{Binding ClearTrendDataCommand}"
|
|
Content="清空曲线"
|
|
Background="#FF6B8791" />
|
|
</DockPanel>
|
|
|
|
<Grid Margin="0,0,0,0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="12" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<Border Grid.Column="0" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="压力/ΔP 趋势" />
|
|
<WrapPanel Margin="0,0,0,8">
|
|
<Border Width="12" Height="12" Margin="0,2,6,0" Background="#FF0B7A75" CornerRadius="6" />
|
|
<TextBlock Margin="0,0,12,0" Style="{StaticResource CaptionStyle}" Text="近端压力" />
|
|
<Border Width="12" Height="12" Margin="0,2,6,0" Background="#FF3C6FB6" CornerRadius="6" />
|
|
<TextBlock Margin="0,0,12,0" Style="{StaticResource CaptionStyle}" Text="远端压力" />
|
|
<Border Width="12" Height="12" Margin="0,2,6,0" Background="#FFD38A16" CornerRadius="6" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="ΔP" />
|
|
</WrapPanel>
|
|
<Grid Height="180" Background="#FFF7FBFC">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
<Border Grid.Row="0" BorderBrush="#FFE0EAEE" BorderThickness="0,0,0,1" />
|
|
<Border Grid.Row="1" BorderBrush="#FFE0EAEE" BorderThickness="0,0,0,1" />
|
|
<Border Grid.Row="2" BorderBrush="#FFE0EAEE" BorderThickness="0,0,0,1" />
|
|
<Canvas>
|
|
<Polyline Stroke="#FF0B7A75" StrokeThickness="2">
|
|
<Polyline.Points>
|
|
<MultiBinding Converter="{StaticResource TrendPointCollectionConverter}">
|
|
<Binding Path="ProximalPressureTrendValues" />
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualWidth" />
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualHeight" />
|
|
<Binding Path="PressureTrendMax" />
|
|
</MultiBinding>
|
|
</Polyline.Points>
|
|
</Polyline>
|
|
<Polyline Stroke="#FF3C6FB6" StrokeThickness="2">
|
|
<Polyline.Points>
|
|
<MultiBinding Converter="{StaticResource TrendPointCollectionConverter}">
|
|
<Binding Path="DistalPressureTrendValues" />
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualWidth" />
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualHeight" />
|
|
<Binding Path="PressureTrendMax" />
|
|
</MultiBinding>
|
|
</Polyline.Points>
|
|
</Polyline>
|
|
<Polyline Stroke="#FFD38A16" StrokeThickness="2">
|
|
<Polyline.Points>
|
|
<MultiBinding Converter="{StaticResource TrendPointCollectionConverter}">
|
|
<Binding Path="DeltaPressureTrendValues" />
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualWidth" />
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualHeight" />
|
|
<Binding Path="PressureTrendMax" />
|
|
</MultiBinding>
|
|
</Polyline.Points>
|
|
</Polyline>
|
|
</Canvas>
|
|
</Grid>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<Border Grid.Column="2" Style="{StaticResource PanelSectionStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="{Binding FlowTrendTitle}" />
|
|
<WrapPanel Margin="0,0,0,8">
|
|
<Border Width="12" Height="12" Margin="0,2,6,0" Background="#FF0B7A75" CornerRadius="6" />
|
|
<TextBlock Margin="0,0,12,0" Style="{StaticResource CaptionStyle}" Text="{Binding FlowTrendPrimaryLabel}" />
|
|
<Border Width="12" Height="12" Margin="0,2,6,0" Background="#FF3C6FB6" CornerRadius="6">
|
|
<Border.Style>
|
|
<Style TargetType="Border">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding HasFlowTrendSecondary}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
</Border>
|
|
<TextBlock Margin="0,0,12,0" Text="{Binding FlowTrendSecondaryLabel}">
|
|
<TextBlock.Style>
|
|
<Style TargetType="TextBlock" BasedOn="{StaticResource CaptionStyle}">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding HasFlowTrendSecondary}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</TextBlock.Style>
|
|
</TextBlock>
|
|
<Border Width="12" Height="12" Margin="0,2,6,0" Background="#FFD38A16" CornerRadius="6">
|
|
<Border.Style>
|
|
<Style TargetType="Border">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding HasFlowTrendTertiary}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
</Border>
|
|
<TextBlock Text="{Binding FlowTrendTertiaryLabel}">
|
|
<TextBlock.Style>
|
|
<Style TargetType="TextBlock" BasedOn="{StaticResource CaptionStyle}">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding HasFlowTrendTertiary}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</TextBlock.Style>
|
|
</TextBlock>
|
|
</WrapPanel>
|
|
<Grid Height="180" Background="#FFF7FBFC">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
<Border Grid.Row="0" BorderBrush="#FFE0EAEE" BorderThickness="0,0,0,1" />
|
|
<Border Grid.Row="1" BorderBrush="#FFE0EAEE" BorderThickness="0,0,0,1" />
|
|
<Border Grid.Row="2" BorderBrush="#FFE0EAEE" BorderThickness="0,0,0,1" />
|
|
<Canvas>
|
|
<Polyline Stroke="#FF0B7A75" StrokeThickness="2">
|
|
<Polyline.Points>
|
|
<MultiBinding Converter="{StaticResource TrendPointCollectionConverter}">
|
|
<Binding Path="ActiveFlowTrendPrimaryValues" />
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualWidth" />
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualHeight" />
|
|
<Binding Path="FlowTrendMax" />
|
|
</MultiBinding>
|
|
</Polyline.Points>
|
|
</Polyline>
|
|
<Polyline Stroke="#FF3C6FB6" StrokeThickness="2">
|
|
<Polyline.Style>
|
|
<Style TargetType="Polyline">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding HasFlowTrendSecondary}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Polyline.Style>
|
|
<Polyline.Points>
|
|
<MultiBinding Converter="{StaticResource TrendPointCollectionConverter}">
|
|
<Binding Path="ActiveFlowTrendSecondaryValues" />
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualWidth" />
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualHeight" />
|
|
<Binding Path="FlowTrendMax" />
|
|
</MultiBinding>
|
|
</Polyline.Points>
|
|
</Polyline>
|
|
<Polyline Stroke="#FFD38A16" StrokeThickness="2">
|
|
<Polyline.Style>
|
|
<Style TargetType="Polyline">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding HasFlowTrendTertiary}" Value="True">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Polyline.Style>
|
|
<Polyline.Points>
|
|
<MultiBinding Converter="{StaticResource TrendPointCollectionConverter}">
|
|
<Binding Path="ActiveFlowTrendTertiaryValues" />
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualWidth" />
|
|
<Binding RelativeSource="{RelativeSource AncestorType=Canvas}" Path="ActualHeight" />
|
|
<Binding Path="FlowTrendMax" />
|
|
</MultiBinding>
|
|
</Polyline.Points>
|
|
</Polyline>
|
|
</Canvas>
|
|
</Grid>
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
</StackPanel>
|
|
</Border>
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
</TabItem>
|
|
|
|
<TabItem Header="配置">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
<StackPanel Margin="0,6,0,0">
|
|
<Border Style="{StaticResource CardBorderStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="产品与试验配置" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="以下参数会自动保存到本地配置文件,重启后自动恢复。" TextWrapping="Wrap" />
|
|
<Grid Margin="0,12,0,0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="160" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
<TextBlock VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="产品型号" />
|
|
<TextBox Grid.Column="1" Text="{Binding ProductModel, UpdateSourceTrigger=PropertyChanged}" />
|
|
<TextBlock Grid.Row="1" VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="适用人群" />
|
|
<TextBox Grid.Row="1" Grid.Column="1" Margin="0,8,0,0" Text="{Binding ApplicablePopulation, UpdateSourceTrigger=PropertyChanged}" />
|
|
<TextBlock Grid.Row="2" VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="标称最大流量 L/min" />
|
|
<TextBox Grid.Row="2" Grid.Column="1" Margin="0,8,0,0" Text="{Binding RatedMaxFlow, UpdateSourceTrigger=PropertyChanged}" />
|
|
</Grid>
|
|
<TextBlock Margin="0,10,0,0" FontSize="14" FontWeight="SemiBold" Text="{Binding ConfigurationSummary}" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<UniformGrid Columns="2" Margin="0,0,0,12">
|
|
<Border Margin="0,0,8,8" Style="{StaticResource CardBorderStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="压力降限值" />
|
|
<TextBlock Style="{StaticResource CaptionStyle}" Text="{Binding PressureDropFlowPointDisplay}" TextWrapping="Wrap" />
|
|
<Grid Margin="0,12,0,0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="70" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
<TextBlock VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="50%" />
|
|
<TextBox Grid.Column="1" Text="{Binding PressureDropLimit50, UpdateSourceTrigger=PropertyChanged}" />
|
|
<TextBlock Grid.Row="1" VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="75%" />
|
|
<TextBox Grid.Row="1" Grid.Column="1" Margin="0,8,0,0" Text="{Binding PressureDropLimit75, UpdateSourceTrigger=PropertyChanged}" />
|
|
<TextBlock Grid.Row="2" VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="100%" />
|
|
<TextBox Grid.Row="2" Grid.Column="1" Margin="0,8,0,0" Text="{Binding PressureDropLimit100, UpdateSourceTrigger=PropertyChanged}" />
|
|
</Grid>
|
|
<TextBlock Margin="0,10,0,0" Style="{StaticResource CaptionStyle}" Text="{Binding PressureDropLimitDisplay}" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<Border Margin="0,0,0,8" Style="{StaticResource CardBorderStyle}">
|
|
<StackPanel>
|
|
<TextBlock Style="{StaticResource SectionTitleStyle}" Text="抗塌陷与再循环限值" />
|
|
<Grid Margin="0,12,0,0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="180" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
<TextBlock VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="抗塌陷允许增幅 %" />
|
|
<TextBox Grid.Column="1" Text="{Binding AntiCollapseAllowedIncreaseRate, UpdateSourceTrigger=PropertyChanged}" />
|
|
<TextBlock Grid.Row="1" VerticalAlignment="Center" Style="{StaticResource CaptionStyle}" Text="再循环 R 限值 %" />
|
|
<TextBox Grid.Row="1" Grid.Column="1" Margin="0,8,0,0" Text="{Binding RecirculationAllowedLimit, UpdateSourceTrigger=PropertyChanged}" />
|
|
</Grid>
|
|
<TextBlock Margin="0,10,0,0" Style="{StaticResource CaptionStyle}" Text="{Binding RecirculationLimitDisplay}" TextWrapping="Wrap" />
|
|
<TextBlock Margin="0,4,0,0" Style="{StaticResource CaptionStyle}" Text="抗塌陷判定规则:负压后压力降增幅不超过该限值。" TextWrapping="Wrap" />
|
|
</StackPanel>
|
|
</Border>
|
|
</UniformGrid>
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
</TabItem>
|
|
|
|
<TabItem Header="追溯">
|
|
<Grid Margin="0,6,0,0">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
<Border Margin="0,0,0,10" Padding="14" Background="#FFF4F8FA" CornerRadius="14">
|
|
<TextBlock FontSize="15" TextWrapping="Wrap" Text="仅保留本地追溯:时间、结果、结束记录和报表导出记录。" />
|
|
</Border>
|
|
<DataGrid Grid.Row="1" ItemsSource="{Binding TraceEvents}" IsReadOnly="True">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="时间" Binding="{Binding Timestamp, StringFormat={}{0:yyyy-MM-dd HH:mm:ss}}" Width="180" />
|
|
<DataGridTextColumn Header="阶段" Binding="{Binding Stage}" Width="110" />
|
|
<DataGridTextColumn Header="详情" Binding="{Binding Detail}" Width="*" />
|
|
<DataGridTextColumn Header="操作员" Binding="{Binding Operator}" Width="100" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</Grid>
|
|
</TabItem>
|
|
</TabControl>
|
|
</Border>
|
|
</Grid>
|
|
</Grid>
|
|
</Window>
|