Files
VacuumPressureMembranePoreS…/Views/PoreDistributionView.xaml

264 lines
14 KiB
Plaintext
Raw Normal View History

2026-02-27 16:03:49 +08:00
<UserControl x:Class="MembranePoreTester.Views.PoreDistributionView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
2026-03-24 19:33:35 +08:00
xmlns:oxy="http://oxyplot.org/wpf"
2026-03-27 21:35:32 +08:00
xmlns:conv="clr-namespace:MembranePoreTester.Converters"
Background="#F5F7FA" >
2026-02-27 16:03:49 +08:00
<UserControl.Resources>
<conv:InverseBooleanConverter x:Key="InverseBooleanConverter"/>
2026-03-27 21:35:32 +08:00
<!-- 统一按钮样式 -->
<Style TargetType="Button">
<Setter Property="Background" Value="#2196F3"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="12,6"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Background}" CornerRadius="4" Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#1976D2"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="#0D47A1"/>
</Trigger>
</Style.Triggers>
</Style>
<!-- 统一文本框样式 -->
<Style TargetType="TextBox">
<Setter Property="Height" Value="28"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Background" Value="White"/>
<Setter Property="BorderBrush" Value="#D0D3D9"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Padding" Value="5,2"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<!-- 统一组合框样式 -->
<Style TargetType="ComboBox">
<Setter Property="Height" Value="28"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Background" Value="White"/>
<Setter Property="BorderBrush" Value="#D0D3D9"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<!-- 统一标签样式 -->
<Style TargetType="Label">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Foreground" Value="#2C3E50"/>
<Setter Property="Margin" Value="5"/>
</Style>
<!-- 统一GroupBox样式自定义圆角白色背景 -->
<Style TargetType="GroupBox">
<Setter Property="Background" Value="White"/>
<Setter Property="BorderBrush" Value="#E9ECF0"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Margin" Value="0,0,0,10"/>
<Setter Property="Padding" Value="10"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupBox">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="6">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{TemplateBinding Header}" FontWeight="SemiBold" FontSize="14" Margin="0,0,0,10"/>
<ContentPresenter Grid.Row="1" Content="{TemplateBinding Content}"/>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- DataGrid 样式 -->
<Style TargetType="DataGrid">
<Setter Property="Background" Value="White"/>
<Setter Property="BorderBrush" Value="#E9ECF0"/>
<Setter Property="RowHeight" Value="28"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="GridLinesVisibility" Value="Horizontal"/>
<Setter Property="HeadersVisibility" Value="Column"/>
</Style>
2026-02-27 16:03:49 +08:00
</UserControl.Resources>
2026-03-27 21:35:32 +08:00
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- 样品信息区域 -->
<GroupBox Grid.Row="0" Header="📄 样品信息">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="膜类型:"/>
<ComboBox Grid.Row="0" Grid.Column="1" ItemsSource="{Binding MembraneTypes}"
SelectedItem="{Binding Record.SampleType}"/>
<!--<Label Grid.Row="0" Grid.Column="2" Content="规格:"/>
<TextBox Grid.Row="0" Grid.Column="3" Text="{Binding Record.SampleSpec}"/>-->
<Label Grid.Row="0" Grid.Column="2" Content="室温(°C):"/>
<TextBox Grid.Row="0" Grid.Column="3" Text="{Binding Record.RoomTemperature}"/>
<Label Grid.Row="1" Grid.Column="2" Content="浸润时间(h):"/>
<TextBox Grid.Row="1" Grid.Column="3" Text="{Binding Record.SoakingTime}"/>
<Label Grid.Row="1" Grid.Column="0" Content="测试液体:"/>
<ComboBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Liquids}"
SelectedItem="{Binding SelectedLiquid}" DisplayMemberPath="Name"/>
<!--<Label Grid.Row="2" Grid.Column="2" Content="生产厂家:"/>
<TextBox Grid.Row="2" Grid.Column="3" Text="{Binding Record.LiquidManufacturer}"/>-->
<Label Grid.Row="3" Grid.Column="0" Content="压力单位:"/>
<ComboBox Grid.Row="3" Grid.Column="1" ItemsSource="{Binding PressureUnits}"
SelectedItem="{Binding Record.PressureUnit}"/>
2026-03-28 16:48:41 +08:00
<Label Grid.Row="3" Grid.Column="2" Content="(干/湿膜)/(大/小流量):"/>
<ComboBox HorizontalAlignment="Left" Grid.Row="3" Grid.Column="3" SelectedItem="{Binding TestMode}" Width="80">
<ComboBoxItem Content="湿膜" IsSelected="True"/>
<ComboBoxItem Content="干膜"/>
</ComboBox>
<ComboBox Grid.Row="3" HorizontalAlignment="Right" Grid.Column="3" ItemsSource="{Binding PressureModeList}"
SelectedItem="{Binding SelectedPressureMode}" Width="100"/>
2026-03-27 21:35:32 +08:00
</Grid>
</GroupBox>
<!-- 数据表格与图表区域 -->
<Grid Grid.Row="1">
2026-02-27 16:03:49 +08:00
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
2026-03-27 21:35:32 +08:00
2026-02-27 16:03:49 +08:00
2026-03-28 16:48:41 +08:00
<!-- 左侧数据表格区域,改为两列 Grid -->
2026-03-27 21:35:32 +08:00
2026-03-28 16:48:41 +08:00
<ScrollViewer VerticalScrollBarVisibility="Auto" MaxHeight="400">
2026-03-27 21:35:32 +08:00
2026-03-28 16:48:41 +08:00
<Grid Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
2026-03-27 21:35:32 +08:00
2026-03-28 16:48:41 +08:00
<!-- 湿膜表格 -->
<GroupBox Grid.Column="0" Header="💧 湿膜数据" Margin="0,0,5,0">
2026-03-27 21:35:32 +08:00
<DataGrid ItemsSource="{Binding Record.DataPoints}"
AutoGenerateColumns="False"
CanUserAddRows="False"
ColumnWidth="*">
2026-03-28 16:48:41 +08:00
<DataGrid.Columns>
<DataGridTextColumn Header="压力"
2026-03-27 21:35:32 +08:00
Binding="{Binding Pressure, UpdateSourceTrigger=PropertyChanged}"
MinWidth="100"/>
2026-03-28 16:48:41 +08:00
<DataGridTextColumn Header="湿膜流量(L/min)"
2026-03-27 21:35:32 +08:00
Binding="{Binding WetFlow, UpdateSourceTrigger=PropertyChanged}"
MinWidth="100"/>
2026-03-28 16:48:41 +08:00
</DataGrid.Columns>
</DataGrid>
</GroupBox>
2026-03-27 21:35:32 +08:00
2026-03-28 16:48:41 +08:00
<!-- 干膜表格 -->
<GroupBox Grid.Column="1" Header="🔥 干膜数据" Margin="5,0,0,0">
<DataGrid ItemsSource="{Binding Record.DataPoints}"
2026-03-27 21:35:32 +08:00
AutoGenerateColumns="False"
CanUserAddRows="False"
ColumnWidth="*">
2026-03-28 16:48:41 +08:00
<DataGrid.Columns>
<DataGridTextColumn Header="压力"
2026-03-27 21:35:32 +08:00
Binding="{Binding Pressure, UpdateSourceTrigger=PropertyChanged}"
MinWidth="100"/>
2026-03-28 16:48:41 +08:00
<DataGridTextColumn Header="干膜流量(L/min)"
2026-03-27 21:35:32 +08:00
Binding="{Binding DryFlow, UpdateSourceTrigger=PropertyChanged}"
MinWidth="100"/>
2026-03-28 16:48:41 +08:00
</DataGrid.Columns>
</DataGrid>
</GroupBox>
</Grid>
2026-03-27 21:35:32 +08:00
2026-03-28 16:48:41 +08:00
</ScrollViewer>
2026-03-27 21:35:32 +08:00
<GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center" Background="#E9ECF0"/>
<!-- 右侧曲线图 -->
<GroupBox Grid.Column="2" Header="📈 流量-压力曲线" Margin="5,0,0,0">
<StackPanel>
<Border Background="#F5F5F5" CornerRadius="4" Padding="8,4" Margin="0,0,0,5" HorizontalAlignment="Right">
2026-02-27 16:03:49 +08:00
<StackPanel Orientation="Horizontal">
2026-03-27 21:35:32 +08:00
<Rectangle Width="20" Height="2" Fill="Blue" Margin="0,0,5,0"/>
<TextBlock Text="湿膜流量 (Wet Flow)" FontSize="11" Margin="0,0,15,0"/>
<Rectangle Width="20" Height="2" Fill="Red" Margin="0,0,5,0"/>
<TextBlock Text="干膜流量 (Dry Flow)" FontSize="11"/>
2026-02-27 16:03:49 +08:00
</StackPanel>
2026-03-27 21:35:32 +08:00
</Border>
<oxy:PlotView Model="{Binding PlotModel}" Height="300" Margin="5"/>
</StackPanel>
2026-03-24 19:33:35 +08:00
</GroupBox>
2026-03-27 21:35:32 +08:00
</Grid>
2026-02-27 16:03:49 +08:00
2026-03-27 21:35:32 +08:00
<!-- 计算结果及操作按钮区域 -->
<Border Grid.Row="2" Margin="0,10,0,0" Background="White" CornerRadius="6" Padding="10" BorderBrush="#E9ECF0" BorderThickness="1">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<GroupBox Header="📏 平均孔径" Margin="5" BorderThickness="0">
<TextBlock Text="{Binding AveragePoreSize, StringFormat={}{0:F3} μm}" FontSize="20" FontWeight="Bold" Foreground="#2196F3"/>
</GroupBox>
<Separator Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" Margin="10,0"/>
<GroupBox Header="🎯 孔分布区间计算" Margin="5" BorderThickness="0">
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding LowerPore}" Width="60" Margin="2"/>
<TextBlock Text="~" VerticalAlignment="Center" Margin="2"/>
<TextBox Text="{Binding UpperPore}" Width="60" Margin="2"/>
<TextBlock Text="μm" VerticalAlignment="Center" Margin="5,0,10,0"/>
<Button Content="计算" Command="{Binding CalculateCommand}" Margin="5,0" Padding="12,5" Background="#2196F3"/>
<TextBlock Text="{Binding RangePercentage, StringFormat={}{0:F1}%}" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" Margin="10,0" Foreground="#4CAF50"/>
</StackPanel>
</GroupBox>
<Separator Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" Margin="10,0"/>
<StackPanel Orientation="Horizontal">
2026-03-28 16:48:41 +08:00
<Button Content="🔧 大流量校准" Command="{Binding OpenFlowCalibCommand}" Background="#607D8B"/>
<Button Content="🔧 小流量校准" Command="{Binding OpenFlowCalibCommand2}" Background="#607D8B"/>
2026-03-27 21:35:32 +08:00
<Button Content="📄 生成报告" Command="{Binding GenerateReportCommand}" Background="#2196F3"/>
<Button Content="💾 保存到历史" Command="{Binding SaveCommand}" Background="#4CAF50"/>
<Button Content="📊 导出Excel" Command="{Binding ExportCommand}" Background="#FF9800"/>
</StackPanel>
2026-02-27 16:03:49 +08:00
</StackPanel>
2026-03-27 21:35:32 +08:00
</Border>
</Grid>
</ScrollViewer>
2026-02-27 16:03:49 +08:00
</UserControl>