SSPC-Tester/SSPCTester.UI/Views/ProtectView.xaml

122 lines
7.6 KiB
Plaintext
Raw Normal View History

<UserControl x:Class="SSPCTester.UI.Views.ProtectView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:SSPCTester.UI.ViewModels"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=vm:ProtectViewModel}">
<Grid Margin="20">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="3*" MinHeight="240" />
<RowDefinition Height="2*" MinHeight="200" />
</Grid.RowDefinitions>
<TextBlock Text="保护功能(覆盖指标 11/14/15/17/19/21/22/23" FontSize="{StaticResource FsH1}" FontWeight="Bold" Margin="0,0,0,8" />
<Border Grid.Row="1" Padding="12,8" Background="{StaticResource WarningSoftBrush}" CornerRadius="{StaticResource RadiusMd}" Margin="0,0,0,12">
<TextBlock Text="此模块当前仅验证框架,暂不执行实际故障触发测试。" Foreground="{StaticResource WarningBrush}" FontWeight="SemiBold" />
</Border>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="320" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border Style="{StaticResource Card}" Margin="0,0,12,0">
<StackPanel>
<TextBlock Style="{StaticResource CardTitle}" Text="保护项目" />
<CheckBox Margin="0,4" Content="跳闸" IsChecked="{Binding EnableTrip}" />
<CheckBox Margin="0,4" Content="短路" IsChecked="{Binding EnableShort}" />
<CheckBox Margin="0,4" Content="过温" IsChecked="{Binding EnableOverTemp}" />
<CheckBox Margin="0,4" Content="过压" IsChecked="{Binding EnableOverVolt}" />
<CheckBox Margin="0,4" Content="欠压" IsChecked="{Binding EnableUnderVolt}" />
<CheckBox Margin="0,4" Content="限流" IsChecked="{Binding EnableLimit}" />
<TextBlock Style="{StaticResource CardTitle}" Text="触发阈值" Margin="0,16,0,12" />
<Grid>
<Grid.ColumnDefinitions><ColumnDefinition Width="*" /><ColumnDefinition Width="*" /></Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="6" />
<RowDefinition Height="Auto" />
<RowDefinition Height="6" />
<RowDefinition Height="Auto" />
<RowDefinition Height="6" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Text="过压 (V)" /><TextBox Grid.Column="1" Text="{Binding OverVoltThreshold}" FontFamily="{StaticResource FontMono}" />
<TextBlock Grid.Row="2" Text="欠压 (V)" /><TextBox Grid.Row="2" Grid.Column="1" Text="{Binding UnderVoltThreshold}" FontFamily="{StaticResource FontMono}" />
<TextBlock Grid.Row="4" Text="过流 (A)" /><TextBox Grid.Row="4" Grid.Column="1" Text="{Binding OverCurrentThreshold}" FontFamily="{StaticResource FontMono}" />
<TextBlock Grid.Row="6" Text="过温 (℃)" /><TextBox Grid.Row="6" Grid.Column="1" Text="{Binding OverTempThreshold}" FontFamily="{StaticResource FontMono}" />
</Grid>
<Button Style="{StaticResource PrimaryButton}" Content="生成演示结果" Margin="0,16,0,0" Command="{Binding RunDemoCommand}" />
</StackPanel>
</Border>
<Border Style="{StaticResource Card}" Grid.Column="1">
<DockPanel>
<TextBlock DockPanel.Dock="Top" Style="{StaticResource CardTitle}" Text="故障关断曲线(占位)" />
<Border Background="{StaticResource WaveBgBrush}" BorderBrush="{StaticResource BorderSubtleBrush}" BorderThickness="1" CornerRadius="{StaticResource RadiusMd}">
<TextBlock Text="—— 框架占位 ——" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="{StaticResource TextMutedBrush}" />
</Border>
</DockPanel>
</Border>
</Grid>
<Grid Grid.Row="3" Margin="0,12,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="576" />
</Grid.ColumnDefinitions>
<Border Style="{StaticResource Card}" Margin="0,0,12,0">
<DockPanel>
<TextBlock DockPanel.Dock="Top" Style="{StaticResource CardTitle}" Text="结果" />
<DataGrid ItemsSource="{Binding Rows}">
<DataGrid.Columns>
<DataGridTextColumn Header="保护类型" Binding="{Binding ProtectType}" Width="*" />
<DataGridTextColumn Header="触发条件" Binding="{Binding Trigger}" Width="2*" />
<DataGridTextColumn Header="关断时间(ms)" Width="*">
<DataGridTextColumn.Binding><Binding Path="TripTimeMs" Converter="{StaticResource NumberOrDash}" ConverterParameter="F2" /></DataGridTextColumn.Binding>
<DataGridTextColumn.ElementStyle><Style TargetType="TextBlock" BasedOn="{StaticResource MonoText}" /></DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTemplateColumn Header="结果" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border Style="{StaticResource StatusBadge}" Background="{Binding Status, Converter={StaticResource StatusToSoftBrush}}">
<TextBlock Text="{Binding Status, Converter={StaticResource StatusToText}}" Foreground="{Binding Status, Converter={StaticResource StatusToBrush}}" FontSize="{StaticResource FsSmall}" />
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</DockPanel>
</Border>
<Border Grid.Column="1" Style="{StaticResource Card}" Padding="14">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Style="{StaticResource CardTitle}" Text="测试说明" />
<TextBox Grid.Row="1"
Text="{Binding Project.TestFunction.Protect, UpdateSourceTrigger=PropertyChanged}"
AcceptsReturn="True"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto"
Height="Auto"
MinHeight="130"
Padding="8"
VerticalContentAlignment="Top" />
</Grid>
</Border>
</Grid>
</Grid>
</UserControl>