更新
This commit is contained in:
@@ -267,7 +267,7 @@
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<GroupBox Header="预设参数设置" Grid.Row="0" Margin="0,5">
|
||||
<GroupBox Header="当前参数" Grid.Row="0" Margin="0,5">
|
||||
<UniformGrid Columns="3" Margin="10">
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,10,18,0">
|
||||
<TextBlock Text="内控下限(N):" Width="130" VerticalAlignment="Center"/>
|
||||
@@ -341,29 +341,20 @@
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<GroupBox Header="预设参数设置" Grid.Row="0">
|
||||
<GroupBox Header="当前参数" Grid.Row="0">
|
||||
<WrapPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="转速设置(r/min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox Text="{Binding FriabilityTargetRpm, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<TextBlock Text="{Binding FriabilityTargetRpm, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="试验转数(转):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox Text="{Binding FriabilityTargetRounds, UpdateSourceTrigger=PropertyChanged}"
|
||||
helpers:NumericInput.AllowDecimal="False"/>
|
||||
<TextBlock Text="{Binding FriabilityTargetRounds}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="失重率限度(%):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBlock Text="{Binding FriabilityMaxLossPercent, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="初始重量(g):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox Text="{Binding WeightBefore, UpdateSourceTrigger=PropertyChanged, StringFormat=F3}"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="最终重量(g):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox Text="{Binding WeightAfter, UpdateSourceTrigger=PropertyChanged, StringFormat=F3}"/>
|
||||
</StackPanel>
|
||||
</WrapPanel>
|
||||
</GroupBox>
|
||||
|
||||
@@ -414,25 +405,27 @@
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<GroupBox Header="预设参数设置" Grid.Row="0">
|
||||
<GroupBox Header="当前参数" Grid.Row="0">
|
||||
<WrapPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="溶出1时间(min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox Text="{Binding Dissolution1TimeMin, UpdateSourceTrigger=PropertyChanged}"
|
||||
helpers:NumericInput.AllowDecimal="False"/>
|
||||
<TextBlock Text="{Binding Dissolution1TimeMin}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="溶出2时间(min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox Text="{Binding Dissolution2TimeMin, UpdateSourceTrigger=PropertyChanged}"
|
||||
helpers:NumericInput.AllowDecimal="False"/>
|
||||
<TextBlock Text="{Binding Dissolution2TimeMin}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="溶出1间隔取样时间(min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox Text="{Binding Dissolution1SampleIntervalMin, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<TextBlock Text="{Binding Dissolution1SampleIntervalMin, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="溶出2间隔取样时间(min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox Text="{Binding Dissolution2SampleIntervalMin, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<TextBlock Text="{Binding Dissolution2SampleIntervalMin, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="30min最低溶出度Q(%):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBlock Text="{Binding DissolutionMinPercentAt30Min, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
</WrapPanel>
|
||||
</GroupBox>
|
||||
@@ -538,28 +531,23 @@
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<GroupBox Header="预设参数设置" Grid.Row="0">
|
||||
<GroupBox Header="当前参数" Grid.Row="0">
|
||||
<WrapPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="剂型规则:" Style="{StaticResource ParamLabel}"/>
|
||||
<ComboBox SelectedValue="{Binding DisintegrationDosageForm, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
SelectedValuePath="Content"
|
||||
Width="150"
|
||||
Height="40"
|
||||
FontSize="15">
|
||||
<ComboBoxItem Content="普通片"/>
|
||||
<ComboBoxItem Content="薄膜衣片"/>
|
||||
<ComboBoxItem Content="糖衣片"/>
|
||||
<ComboBoxItem Content="胶囊"/>
|
||||
</ComboBox>
|
||||
<TextBlock Text="{Binding DisintegrationDosageForm}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="崩解速度(r/min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox Text="{Binding DisintegrationSpeedRpm, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<TextBlock Text="{Binding DisintegrationSpeedRpm, StringFormat=F1}" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="崩解时间(min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox Text="{Binding DisintegrationTimeMin, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<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"/>
|
||||
</StackPanel>
|
||||
</WrapPanel>
|
||||
</GroupBox>
|
||||
|
||||
@@ -1,145 +1,214 @@
|
||||
<Window x:Class="TabletTester2025.SettingsWindow"
|
||||
<Window x:Class="TabletTester2025.SettingsWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:helpers="clr-namespace:TabletTester2025.Helpers"
|
||||
Title="参数设置 - 中国药典2025"
|
||||
Width="1024" MinHeight="768" WindowState="Maximized"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
|
||||
ResizeMode="CanResize" Background="#F5F5F5">
|
||||
Title="参数设置 - 中国药典2025"
|
||||
Width="1024"
|
||||
MinHeight="768"
|
||||
WindowState="Maximized"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
ResizeMode="CanResize"
|
||||
Background="#EDF1F5">
|
||||
<Window.Resources>
|
||||
<SolidColorBrush x:Key="PanelBorderBrush" Color="#D8E1EC"/>
|
||||
<SolidColorBrush x:Key="PrimaryBrush" Color="#1565A9"/>
|
||||
|
||||
<Style TargetType="GroupBox">
|
||||
<Setter Property="Margin" Value="0,0,0,14"/>
|
||||
<Setter Property="Padding" Value="14"/>
|
||||
<Setter Property="Background" Value="White"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource PanelBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="FontSize" Value="16"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
</Style>
|
||||
|
||||
<Style TargetType="TextBlock" x:Key="ParamLabel">
|
||||
<Setter Property="Width" Value="220"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="Foreground" Value="#526273"/>
|
||||
<Setter Property="FontSize" Value="15"/>
|
||||
<Setter Property="FontWeight" Value="Normal"/>
|
||||
</Style>
|
||||
|
||||
<Style TargetType="TextBox">
|
||||
<Setter Property="Width" Value="180"/>
|
||||
<Setter Property="Height" Value="40"/>
|
||||
<Setter Property="Padding" Value="8,2"/>
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
<Setter Property="FontSize" Value="15"/>
|
||||
<Setter Property="helpers:NumericInput.IsEnabled" Value="True"/>
|
||||
</Style>
|
||||
|
||||
<Style TargetType="StackPanel" x:Key="ParamRow">
|
||||
<Setter Property="Orientation" Value="Horizontal"/>
|
||||
<Setter Property="Margin" Value="0,6,32,6"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
|
||||
<Style TargetType="TextBlock" x:Key="StandardNote">
|
||||
<Setter Property="Foreground" Value="#6A7888"/>
|
||||
<Setter Property="FontSize" Value="13"/>
|
||||
<Setter Property="FontWeight" Value="Normal"/>
|
||||
<Setter Property="TextWrapping" Value="Wrap"/>
|
||||
<Setter Property="Margin" Value="0,10,0,0"/>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
|
||||
<Grid Margin="20">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="药典参数设置" FontSize="20" FontWeight="Bold" Margin="0,0,0,20" HorizontalAlignment="Center"/>
|
||||
|
||||
<!-- 硬度 -->
|
||||
<GroupBox Header="硬度测试" Grid.Row="1" Margin="0,5">
|
||||
<Grid Margin="10">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="150"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="内控下限(N):" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="HardnessMinBox" Grid.Row="0" Grid.Column="1" Margin="5" Text="40"/>
|
||||
<TextBlock Text="内控上限(N):" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="HardnessMaxBox" Grid.Row="1" Grid.Column="1" Margin="5" Text="60"/>
|
||||
<TextBlock Text="测试次数:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="HardnessCountBox"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Margin="5"
|
||||
Text="6"
|
||||
helpers:NumericInput.AllowDecimal="False"/>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<Border Background="#0F3D68" CornerRadius="6" Padding="14,10" Margin="0,0,0,14">
|
||||
<TextBlock Text="药典与内控参数设置"
|
||||
Foreground="White"
|
||||
FontSize="22"
|
||||
FontWeight="Bold"/>
|
||||
</Border>
|
||||
|
||||
<!-- 脆碎度 -->
|
||||
<GroupBox Header="脆碎度" Grid.Row="2" Margin="0,5">
|
||||
<Grid Margin="10">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="150"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="转速(r/min):" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="FriabilityRpmBox" Grid.Row="0" Grid.Column="1" Margin="5" Text="25.0"/>
|
||||
<TextBlock Text="试验转数:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="FriabilityRoundsBox"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Margin="5"
|
||||
Text="100"
|
||||
helpers:NumericInput.AllowDecimal="False"/>
|
||||
<TextBlock Text="最大失重率(%):" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="FriabilityMaxLossBox" Grid.Row="2" Grid.Column="1" Margin="5" Text="1.0"/>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel>
|
||||
<GroupBox Header="硬度内控">
|
||||
<StackPanel>
|
||||
<WrapPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="内控下限(N):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="HardnessMinBox"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="内控上限(N):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="HardnessMaxBox"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="测试次数:" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="HardnessCountBox" helpers:NumericInput.AllowDecimal="False"/>
|
||||
</StackPanel>
|
||||
</WrapPanel>
|
||||
<TextBlock Text="硬度没有统一药典数值限度,此处作为企业内控范围和本机测试次数。"
|
||||
Style="{StaticResource StandardNote}"/>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
|
||||
<!-- 崩解时限 -->
|
||||
<GroupBox Header="崩解时限" Grid.Row="3" Margin="0,5">
|
||||
<Grid Margin="10">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="150"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="剂型规则:" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center"/>
|
||||
<ComboBox x:Name="DisintegrationDosageFormBox"
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Margin="5"
|
||||
Height="40"
|
||||
FontSize="15"
|
||||
SelectionChanged="DisintegrationDosageFormBox_SelectionChanged">
|
||||
<ComboBoxItem Content="普通片" Tag="900"/>
|
||||
<ComboBoxItem Content="薄膜衣片" Tag="1800"/>
|
||||
<ComboBoxItem Content="糖衣片" Tag="3600"/>
|
||||
<ComboBoxItem Content="胶囊" Tag="1800"/>
|
||||
</ComboBox>
|
||||
<TextBlock Text="最长崩解时间(秒):" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="DisintegrationMaxSecBox"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Margin="5"
|
||||
Text="900"
|
||||
helpers:NumericInput.AllowDecimal="False"/>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<GroupBox Header="脆碎度 - 通则0923">
|
||||
<StackPanel>
|
||||
<WrapPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="转速(r/min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="FriabilityRpmBox"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="试验转数:" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="FriabilityRoundsBox" helpers:NumericInput.AllowDecimal="False"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="最大失重率(%):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="FriabilityMaxLossBox"/>
|
||||
</StackPanel>
|
||||
</WrapPanel>
|
||||
<TextBlock Text="通则默认:转速25±1 r/min,转动100次,减失重量不得过1.0%,且不得检出断裂、龟裂或粉碎的片。"
|
||||
Style="{StaticResource StandardNote}"/>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
|
||||
<!-- 溶出度 -->
|
||||
<GroupBox Header="溶出度" Grid.Row="4" Margin="0,5">
|
||||
<Grid Margin="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="150"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Text="30分钟最低溶出度(%):" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center"/>
|
||||
<TextBox x:Name="DissolutionMinPercentBox" Grid.Row="0" Grid.Column="1" Margin="5" Text="80.0"/>
|
||||
<TextBlock Text="取样时间点(分钟,逗号分隔):" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" Margin="0,5,0,0"/>
|
||||
<TextBox x:Name="SampleTimesBox"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Margin="5"
|
||||
Text="5,10,15,30,45,60"
|
||||
helpers:NumericInput.IsEnabled="False"/>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<GroupBox Header="崩解时限 - 通则0921">
|
||||
<StackPanel>
|
||||
<WrapPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="剂型规则:" Style="{StaticResource ParamLabel}"/>
|
||||
<ComboBox x:Name="DisintegrationDosageFormBox"
|
||||
Width="180"
|
||||
Height="40"
|
||||
FontSize="15"
|
||||
SelectionChanged="DisintegrationDosageFormBox_SelectionChanged">
|
||||
<ComboBoxItem Content="普通片" Tag="900"/>
|
||||
<ComboBoxItem Content="薄膜衣片" Tag="1800"/>
|
||||
<ComboBoxItem Content="糖衣片" Tag="3600"/>
|
||||
<ComboBoxItem Content="胶囊" Tag="1800"/>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="最长崩解时间(秒):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="DisintegrationMaxSecBox" helpers:NumericInput.AllowDecimal="False"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="升降频率(次/min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="DisintegrationSpeedBox"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="介质温度(℃):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="DisintegrationTempBox"/>
|
||||
</StackPanel>
|
||||
</WrapPanel>
|
||||
<TextBlock Text="通则默认:升降频率30-32次/min,介质温度37±1℃。不同剂型按药典或品种正文规定时限执行。"
|
||||
Style="{StaticResource StandardNote}"/>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
|
||||
<!-- 按钮 -->
|
||||
<StackPanel Grid.Row="5" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,20">
|
||||
<Button x:Name="SaveButton" Content="保存" Width="80" Height="30" Margin="5" Click="SaveButton_Click" Background="#2196F3" Foreground="White" BorderThickness="0"/>
|
||||
<Button x:Name="CancelButton" Content="取消" Width="80" Height="30" Margin="5" Click="CancelButton_Click" Background="#9E9E9E" Foreground="White" BorderThickness="0"/>
|
||||
<GroupBox Header="溶出度 - 通则0931">
|
||||
<StackPanel>
|
||||
<WrapPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="30分钟最低溶出度Q(%):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="DissolutionMinPercentBox"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="溶出介质温度(℃):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="DissolutionTempBox"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="溶出1运行时间(min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="Dissolution1TimeBox" helpers:NumericInput.AllowDecimal="False"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="溶出2运行时间(min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="Dissolution2TimeBox" helpers:NumericInput.AllowDecimal="False"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="溶出1取样间隔(min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="Dissolution1IntervalBox"/>
|
||||
</StackPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}">
|
||||
<TextBlock Text="溶出2取样间隔(min):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="Dissolution2IntervalBox"/>
|
||||
</StackPanel>
|
||||
</WrapPanel>
|
||||
<StackPanel Style="{StaticResource ParamRow}" Margin="0,8,0,0">
|
||||
<TextBlock Text="取样时间点(分钟,逗号分隔):" Style="{StaticResource ParamLabel}"/>
|
||||
<TextBox x:Name="SampleTimesBox"
|
||||
Width="430"
|
||||
helpers:NumericInput.IsEnabled="False"/>
|
||||
</StackPanel>
|
||||
<TextBlock Text="通则默认:普通制剂通常取6片,溶出介质温度37±0.5℃;Q值、介质、转速和取样点应按具体品种正文或企业批准标准录入。"
|
||||
Style="{StaticResource StandardNote}"/>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,16,0,0">
|
||||
<Button x:Name="SaveButton"
|
||||
Content="保存"
|
||||
Width="110"
|
||||
Height="40"
|
||||
Margin="6"
|
||||
Click="SaveButton_Click"
|
||||
Background="{StaticResource PrimaryBrush}"
|
||||
Foreground="White"
|
||||
BorderThickness="0"
|
||||
FontWeight="SemiBold"/>
|
||||
<Button x:Name="CancelButton"
|
||||
Content="取消"
|
||||
Width="110"
|
||||
Height="40"
|
||||
Margin="6"
|
||||
Click="CancelButton_Click"
|
||||
Background="#687789"
|
||||
Foreground="White"
|
||||
BorderThickness="0"
|
||||
FontWeight="SemiBold"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
@@ -25,7 +25,14 @@ namespace TabletTester2025
|
||||
FriabilityMaxLossBox.Text = p.FriabilityMaxLossPercent.ToString();
|
||||
SelectDisintegrationDosageForm(p.DisintegrationDosageForm);
|
||||
DisintegrationMaxSecBox.Text = p.DisintegrationMaxSeconds.ToString();
|
||||
DisintegrationSpeedBox.Text = p.DisintegrationSpeedRpm.ToString();
|
||||
DisintegrationTempBox.Text = p.DisintegrationTemperatureC.ToString();
|
||||
DissolutionMinPercentBox.Text = p.DissolutionMinPercentAt30min.ToString();
|
||||
DissolutionTempBox.Text = p.DissolutionTemperatureC.ToString();
|
||||
Dissolution1TimeBox.Text = p.Dissolution1TimeMin.ToString();
|
||||
Dissolution2TimeBox.Text = p.Dissolution2TimeMin.ToString();
|
||||
Dissolution1IntervalBox.Text = p.Dissolution1SampleIntervalMin.ToString();
|
||||
Dissolution2IntervalBox.Text = p.Dissolution2SampleIntervalMin.ToString();
|
||||
SampleTimesBox.Text = string.Join(",", p.DissolutionSampleTimes);
|
||||
}
|
||||
|
||||
@@ -42,11 +49,23 @@ namespace TabletTester2025
|
||||
p.FriabilityMaxLossPercent = double.Parse(FriabilityMaxLossBox.Text);
|
||||
p.DisintegrationDosageForm = GetSelectedDisintegrationDosageForm();
|
||||
p.DisintegrationMaxSeconds = int.Parse(DisintegrationMaxSecBox.Text);
|
||||
p.DisintegrationSpeedRpm = double.Parse(DisintegrationSpeedBox.Text);
|
||||
p.DisintegrationTemperatureC = double.Parse(DisintegrationTempBox.Text);
|
||||
p.DissolutionMinPercentAt30min = double.Parse(DissolutionMinPercentBox.Text);
|
||||
p.DissolutionSampleTimes = SampleTimesBox.Text.Split(',').Select(s => int.Parse(s.Trim())).ToArray();
|
||||
p.DissolutionTemperatureC = double.Parse(DissolutionTempBox.Text);
|
||||
p.Dissolution1TimeMin = int.Parse(Dissolution1TimeBox.Text);
|
||||
p.Dissolution2TimeMin = int.Parse(Dissolution2TimeBox.Text);
|
||||
p.Dissolution1SampleIntervalMin = double.Parse(Dissolution1IntervalBox.Text);
|
||||
p.Dissolution2SampleIntervalMin = double.Parse(Dissolution2IntervalBox.Text);
|
||||
p.DissolutionSampleTimes = SampleTimesBox.Text
|
||||
.Split(',', StringSplitOptions.RemoveEmptyEntries)
|
||||
.Select(s => int.Parse(s.Trim()))
|
||||
.ToArray();
|
||||
|
||||
MessageBox.Show("参数已保存(重启后生效)", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
// 可以进一步将参数写入配置文件 appsettings.json 以便持久化(可选,此处省略)
|
||||
ValidateParameters(p);
|
||||
App.SaveCurrentPharmaParameters();
|
||||
|
||||
MessageBox.Show("参数已保存并立即生效", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
DialogResult = true;
|
||||
Close();
|
||||
}
|
||||
@@ -62,11 +81,6 @@ namespace TabletTester2025
|
||||
Close();
|
||||
}
|
||||
|
||||
private void HardnessMinBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void DisintegrationDosageFormBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (DisintegrationDosageFormBox.SelectedItem is ComboBoxItem item && item.Tag is string seconds)
|
||||
@@ -93,5 +107,25 @@ namespace TabletTester2025
|
||||
? item.Content?.ToString() ?? "普通片"
|
||||
: "普通片";
|
||||
}
|
||||
|
||||
private static void ValidateParameters(PharmaParameters p)
|
||||
{
|
||||
if (p.HardnessMin_N < 0 || p.HardnessMax_N <= p.HardnessMin_N)
|
||||
throw new InvalidOperationException("硬度内控上限必须大于下限。");
|
||||
if (p.HardnessTestCount <= 0)
|
||||
throw new InvalidOperationException("硬度测试次数必须大于0。");
|
||||
if (p.FriabilityTargetRpm <= 0 || p.FriabilityTargetRounds <= 0 || p.FriabilityMaxLossPercent <= 0)
|
||||
throw new InvalidOperationException("脆碎度参数必须大于0。");
|
||||
if (p.DisintegrationMaxSeconds <= 0 || p.DisintegrationSpeedRpm <= 0 || p.DisintegrationTemperatureC <= 0)
|
||||
throw new InvalidOperationException("崩解参数必须大于0。");
|
||||
if (p.DissolutionMinPercentAt30min < 0 || p.DissolutionMinPercentAt30min > 150)
|
||||
throw new InvalidOperationException("溶出度Q值应在0到150之间。");
|
||||
if (p.DissolutionTemperatureC <= 0 || p.Dissolution1TimeMin <= 0 || p.Dissolution2TimeMin <= 0)
|
||||
throw new InvalidOperationException("溶出温度和运行时间必须大于0。");
|
||||
if (p.Dissolution1SampleIntervalMin <= 0 || p.Dissolution2SampleIntervalMin <= 0)
|
||||
throw new InvalidOperationException("溶出取样间隔必须大于0。");
|
||||
if (p.DissolutionSampleTimes == null || p.DissolutionSampleTimes.Length == 0 || p.DissolutionSampleTimes.Any(t => t <= 0))
|
||||
throw new InvalidOperationException("溶出取样时间点必须为大于0的分钟数。");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user