SSPC-Tester/SSPCTester.UI/Resources/Controls.xaml

357 lines
19 KiB
Plaintext
Raw Normal View History

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:cnv="clr-namespace:SSPCTester.UI.Converters">
<cnv:StatusToBrushConverter x:Key="StatusToBrush" />
<cnv:StatusToSoftBrushConverter x:Key="StatusToSoftBrush" />
<cnv:StatusToTextConverter x:Key="StatusToText" />
<cnv:BoolToVisConverter x:Key="BoolToVis" />
<cnv:NullToVisConverter x:Key="NullToVis" />
<cnv:LogLevelToBrushConverter x:Key="LogLevelToBrush" />
<cnv:NumberOrDashConverter x:Key="NumberOrDash" />
<!-- ================== 全局默认 ================== -->
<Style TargetType="Window">
<Setter Property="Background" Value="{StaticResource BgAppBrush}" />
<Setter Property="FontFamily" Value="{StaticResource FontSans}" />
<Setter Property="FontSize" Value="{StaticResource FsBody}" />
<Setter Property="Foreground" Value="{StaticResource TextPrimaryBrush}" />
</Style>
<Style TargetType="TextBlock">
<Setter Property="FontFamily" Value="{StaticResource FontSans}" />
<Setter Property="FontSize" Value="{StaticResource FsBody}" />
<Setter Property="Foreground" Value="{StaticResource TextPrimaryBrush}" />
</Style>
<!-- ================== 按钮 ================== -->
<Style x:Key="BaseButton" TargetType="Button">
<Setter Property="Height" Value="{StaticResource ControlHeight}" />
<Setter Property="Padding" Value="14,0" />
<Setter Property="FontFamily" Value="{StaticResource FontSans}" />
<Setter Property="FontSize" Value="{StaticResource FsBody}" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Background" Value="{StaticResource BgSurfaceBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource BorderBrush}" />
<Setter Property="Foreground" Value="{StaticResource TextPrimaryBrush}" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="b"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{StaticResource RadiusMd}"
SnapsToDevicePixels="True">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Margin="{TemplateBinding Padding}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="b" Property="Background" Value="{StaticResource BgHoverBrush}" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="b" Property="Background" Value="{StaticResource BgSelectedBrush}" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.5" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="Button" BasedOn="{StaticResource BaseButton}" />
<Style x:Key="PrimaryButton" TargetType="Button" BasedOn="{StaticResource BaseButton}">
<Setter Property="Background" Value="{StaticResource PrimaryBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource PrimaryBrush}" />
<Setter Property="Foreground" Value="{StaticResource TextInverseBrush}" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="b"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{StaticResource RadiusMd}">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="{TemplateBinding Padding}"
TextElement.Foreground="{TemplateBinding Foreground}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="b" Property="Background" Value="{StaticResource PrimaryHoverBrush}" />
<Setter TargetName="b" Property="BorderBrush" Value="{StaticResource PrimaryHoverBrush}" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="b" Property="Background" Value="{StaticResource PrimaryActiveBrush}" />
<Setter TargetName="b" Property="BorderBrush" Value="{StaticResource PrimaryActiveBrush}" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.5" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="DangerButton" TargetType="Button" BasedOn="{StaticResource BaseButton}">
<Setter Property="Foreground" Value="{StaticResource DangerBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource DangerBrush}" />
<Setter Property="FontWeight" Value="SemiBold" />
</Style>
<Style x:Key="ToggleOnButton" TargetType="Button" BasedOn="{StaticResource BaseButton}">
<Setter Property="Height" Value="26" />
<Setter Property="Padding" Value="10,0" />
<Setter Property="Foreground" Value="{StaticResource SuccessBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource SuccessBrush}" />
<Setter Property="FontWeight" Value="SemiBold" />
</Style>
<Style x:Key="ToggleOffButton" TargetType="Button" BasedOn="{StaticResource BaseButton}">
<Setter Property="Height" Value="26" />
<Setter Property="Padding" Value="10,0" />
<Setter Property="Foreground" Value="{StaticResource TextSecondaryBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource BorderStrongBrush}" />
</Style>
<Style x:Key="LinkButton" TargetType="Button" BasedOn="{StaticResource BaseButton}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}" />
<Setter Property="Height" Value="24" />
<Setter Property="Padding" Value="6,0" />
</Style>
<!-- ================== 输入框 ================== -->
<Style TargetType="TextBox">
<Setter Property="Height" Value="{StaticResource ControlHeight}" />
<Setter Property="Padding" Value="8,0" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="BorderBrush" Value="{StaticResource BorderBrush}" />
<Setter Property="Background" Value="{StaticResource BgSurfaceBrush}" />
<Setter Property="FontFamily" Value="{StaticResource FontSans}" />
<Setter Property="FontSize" Value="{StaticResource FsBody}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Border x:Name="b"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1"
CornerRadius="{StaticResource RadiusMd}">
<ScrollViewer x:Name="PART_ContentHost"
Margin="{TemplateBinding Padding}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter TargetName="b" Property="BorderBrush" Value="{StaticResource PrimaryBrush}" />
<Setter TargetName="b" Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="6" ShadowDepth="0" Opacity="0.4" Color="{StaticResource PrimaryColor}" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="ComboBox">
<Setter Property="Height" Value="{StaticResource ControlHeight}" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="BorderBrush" Value="{StaticResource BorderBrush}" />
<Setter Property="Background" Value="{StaticResource BgSurfaceBrush}" />
<Setter Property="FontFamily" Value="{StaticResource FontSans}" />
<Setter Property="FontSize" Value="{StaticResource FsBody}" />
</Style>
<Style TargetType="CheckBox">
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Foreground" Value="{StaticResource TextPrimaryBrush}" />
<Setter Property="FontSize" Value="{StaticResource FsBody}" />
</Style>
<Style TargetType="RadioButton">
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Foreground" Value="{StaticResource TextPrimaryBrush}" />
<Setter Property="FontSize" Value="{StaticResource FsBody}" />
</Style>
<!-- ================== 卡片 ================== -->
<Style x:Key="Card" TargetType="Border">
<Setter Property="Background" Value="{StaticResource BgSurfaceBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource BorderBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="CornerRadius" Value="{StaticResource RadiusLg}" />
<Setter Property="Padding" Value="20" />
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="3" ShadowDepth="1" Opacity="0.08" Color="#1F2733" />
</Setter.Value>
</Setter>
</Style>
<Style x:Key="CardTitle" TargetType="TextBlock">
<Setter Property="FontSize" Value="{StaticResource FsH2}" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Margin" Value="0,0,0,12" />
</Style>
<Style x:Key="FieldLabel" TargetType="TextBlock">
<Setter Property="Foreground" Value="{StaticResource TextSecondaryBrush}" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Margin" Value="0,0,12,0" />
</Style>
<Style x:Key="MonoText" TargetType="TextBlock">
<Setter Property="FontFamily" Value="{StaticResource FontMono}" />
<Setter Property="FontSize" Value="{StaticResource FsData}" />
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
<!-- ================== 状态徽标 ================== -->
<Style x:Key="StatusBadge" TargetType="Border">
<Setter Property="Padding" Value="8,3" />
<Setter Property="CornerRadius" Value="999" />
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
<!-- ================== DataGrid ================== -->
<Style TargetType="DataGrid">
<Setter Property="Background" Value="{StaticResource BgSurfaceBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource BorderSubtleBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="GridLinesVisibility" Value="None" />
<Setter Property="HorizontalGridLinesBrush" Value="{StaticResource BorderSubtleBrush}" />
<Setter Property="RowBackground" Value="{StaticResource BgSurfaceBrush}" />
<Setter Property="AlternatingRowBackground" Value="{StaticResource BgSurfaceBrush}" />
<Setter Property="HeadersVisibility" Value="Column" />
<Setter Property="CanUserAddRows" Value="False" />
<Setter Property="CanUserDeleteRows" Value="False" />
<Setter Property="CanUserResizeRows" Value="False" />
<Setter Property="CanUserReorderColumns" Value="False" />
<Setter Property="IsReadOnly" Value="True" />
<Setter Property="SelectionUnit" Value="FullRow" />
<Setter Property="AutoGenerateColumns" Value="False" />
<Setter Property="RowHeight" Value="{StaticResource RowHeight}" />
<Setter Property="ColumnHeaderHeight" Value="34" />
<Setter Property="FontFamily" Value="{StaticResource FontSans}" />
<Setter Property="FontSize" Value="{StaticResource FsBody}" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
<Setter Property="VerticalScrollBarVisibility" Value="Auto" />
<Setter Property="HorizontalScrollBarVisibility" Value="Auto" />
</Style>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="{StaticResource BgSurfaceAltBrush}" />
<Setter Property="Foreground" Value="{StaticResource TextSecondaryBrush}" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="Padding" Value="8,0" />
<Setter Property="BorderBrush" Value="{StaticResource BorderSubtleBrush}" />
<Setter Property="BorderThickness" Value="0,0,0,1" />
<Setter Property="Height" Value="34" />
</Style>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="{StaticResource BgSurfaceBrush}" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource BgHoverBrush}" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{StaticResource BgSelectedBrush}" />
<Setter Property="Foreground" Value="{StaticResource TextPrimaryBrush}" />
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Padding" Value="8,0" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="Center" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- ================== TabControl ================== -->
<Style TargetType="TabControl">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Padding" Value="0" />
</Style>
<Style TargetType="TabItem">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="{StaticResource TextSecondaryBrush}" />
<Setter Property="Padding" Value="18,0" />
<Setter Property="Height" Value="{StaticResource TabHeight}" />
<Setter Property="FontFamily" Value="{StaticResource FontSans}" />
<Setter Property="FontSize" Value="{StaticResource FsBody}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Border x:Name="b" Background="{TemplateBinding Background}" BorderThickness="0,0,0,2" BorderBrush="Transparent">
<ContentPresenter ContentSource="Header" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="{TemplateBinding Padding}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="b" Property="Background" Value="{StaticResource BgHoverBrush}" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="b" Property="BorderBrush" Value="{StaticResource PrimaryBrush}" />
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}" />
<Setter Property="FontWeight" Value="SemiBold" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- ================== TreeView ================== -->
<Style TargetType="TreeView">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Padding" Value="0" />
</Style>
<Style TargetType="TreeViewItem">
<Setter Property="Padding" Value="6,4" />
<Setter Property="IsExpanded" Value="True" />
<Setter Property="Foreground" Value="{StaticResource TextPrimaryBrush}" />
</Style>
<!-- ================== 日志面板 ================== -->
<Style x:Key="LogPanel" TargetType="Border">
<Setter Property="Background" Value="{StaticResource BgInsetBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource BorderSubtleBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="CornerRadius" Value="{StaticResource RadiusMd}" />
<Setter Property="Padding" Value="10" />
</Style>
</ResourceDictionary>