C00225155-02/C00225155/MegaRobo.C00225155/MegaRobo.C00225155App/res/TabControlStyle.xaml

246 lines
12 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<LinearGradientBrush x:Key="TabItemSelectedBgBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#348EF6" Offset="0"/>
<!-- 浅蓝 -->
<GradientStop Color="#4AA2FF" Offset="1"/>
<!-- 深蓝 -->
</LinearGradientBrush>
<!-- 悬浮态背景 -->
<SolidColorBrush x:Key="TabItemHoverBgBrush" Color="#EFF6FF"/>
<!-- 默认态背景 -->
<SolidColorBrush x:Key="TabItemNormalBgBrush" Color="Transparent"/>
<!-- 选中态文字色 -->
<SolidColorBrush x:Key="TabItemSelectedForegroundBrush" Color="White"/>
<!-- 悬浮态文字色 -->
<SolidColorBrush x:Key="TabItemHoverForegroundBrush" Color="#348EF6"/>
<!-- 默认态文字色 -->
<SolidColorBrush x:Key="TabItemNormalForegroundBrush" Color="#666666"/>
<!-- 下划线/边框色 -->
<SolidColorBrush x:Key="TabItemUnderlineBrush" Color="#1A70B6"/>
<!-- ====================== 2. TabItem 样式:自定义外观 + 状态反馈 ====================== -->
<Style x:Key="FancyTabItemStyle" TargetType="TabItem">
<Setter Property="BorderThickness" Value="0"/>
<!-- TabItem 之间的间距 -->
<Setter Property="Padding" Value="10,5"/>
<!-- TabItem 内边距(控制文字与边框距离) -->
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Width" Value="120"/>
<Setter Property="FontSize" Value="18"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Grid SnapsToDevicePixels="True">
<!-- 步骤1TabItem 背景(带顶部圆角) -->
<!-- 仅顶部圆角,与内容区域的底部圆角呼应 -->
<Border
x:Name="tabBackground"
CornerRadius="5,5,0,0"
Background="{TemplateBinding Background}"
BorderThickness="0"
Margin="{TemplateBinding Margin}"/>
<!-- 步骤2选中时的底部下划线默认隐藏 -->
<Border
x:Name="tabUnderline"
Height="3"
VerticalAlignment="Bottom"
Background="{StaticResource TabItemUnderlineBrush}"
Visibility="Collapsed"/>
<!-- 步骤3Tab 标题的内容呈现器 -->
<ContentPresenter
x:Name="tabHeader"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Margin="{TemplateBinding Padding}"
ContentSource="Header"
Focusable="False"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Grid>
<!-- 触发器:处理不同状态的样式变化 -->
<ControlTemplate.Triggers>
<!-- 状态1鼠标悬浮 -->
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="tabBackground" Property="Background" Value="{StaticResource TabItemHoverBgBrush}"/>
<Setter Property="Foreground" Value="{StaticResource TabItemHoverForegroundBrush}"/>
</Trigger>
<!-- 状态2选中 -->
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="tabBackground" Property="Background" Value="{StaticResource TabItemSelectedBgBrush}"/>
<Setter Property="Foreground" Value="{StaticResource TabItemSelectedForegroundBrush}"/>
<Setter TargetName="tabUnderline" Property="Visibility" Value="Visible"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="FancyTabItemStyle1" TargetType="TabItem">
<Setter Property="BorderThickness" Value="0"/>
<!-- TabItem 之间的间距 -->
<Setter Property="Padding" Value="10,5"/>
<!-- TabItem 内边距(控制文字与边框距离) -->
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Width" Value="120"/>
<Setter Property="FontSize" Value="16"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Grid SnapsToDevicePixels="True">
<!-- 步骤1TabItem 背景(带顶部圆角) -->
<!-- 仅顶部圆角,与内容区域的底部圆角呼应 -->
<Border
x:Name="tabBackground"
CornerRadius="5"
Background="{TemplateBinding Background}"
BorderThickness="0"
Margin="{TemplateBinding Margin}"/>
<!-- 步骤2选中时的底部下划线默认隐藏 --><!--
<Border
x:Name="tabUnderline"
Height="3"
VerticalAlignment="Bottom"
Background="{StaticResource TabItemUnderlineBrush}"
Visibility="Collapsed"/>-->
<!-- 步骤3Tab 标题的内容呈现器 -->
<ContentPresenter
x:Name="tabHeader"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Margin="{TemplateBinding Padding}"
ContentSource="Header"
Focusable="False"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Grid>
<!-- 触发器:处理不同状态的样式变化 -->
<ControlTemplate.Triggers>
<!-- 状态1鼠标悬浮 -->
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="tabBackground" Property="Background" Value="{StaticResource TabItemHoverBgBrush}"/>
<Setter Property="Foreground" Value="{StaticResource TabItemHoverForegroundBrush}"/>
</Trigger>
<!-- 状态2选中 -->
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="tabBackground" Property="Background" Value="{StaticResource TabItemSelectedBgBrush}"/>
<Setter Property="Foreground" Value="{StaticResource TabItemSelectedForegroundBrush}"/>
<!--<Setter TargetName="tabUnderline" Property="Visibility" Value="Visible"/>-->
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- ====================== 3. TabControl 样式:整体布局 + 背景分层 ====================== -->
<Style x:Key="FancyTabControlStyle" TargetType="TabControl">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabControl">
<Grid SnapsToDevicePixels="True">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<!-- TabItem 行 -->
<RowDefinition Height="*"/>
<!-- 内容行 -->
</Grid.RowDefinitions>
<!-- 步骤1承载所有 TabItem 的面板 -->
<TabPanel
x:Name="HeaderPanel"
Grid.Row="0"
Panel.ZIndex="1"
Margin="0"
IsItemsHost="True"
Background="Transparent"
HorizontalAlignment="Left"/>
<!-- 步骤2内容区域的边框带底部圆角与 TabItem 顶部圆角呼应) -->
<Border
Grid.Row="1"
BorderThickness="1"
BorderBrush="#E0E0E0"
Background="{TemplateBinding Background}"
Margin="0"
CornerRadius="0,0,5,5"/>
<!-- 步骤3内容呈现器 -->
<ContentPresenter
Grid.Row="1"
Margin="1"
ContentSource="SelectedContent"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="FancyTabControlStyle2" TargetType="TabControl">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabControl">
<Grid SnapsToDevicePixels="True">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<!-- TabItem 行 -->
<RowDefinition Height="*"/>
<!-- 内容行 -->
</Grid.RowDefinitions>
<!-- 步骤1承载所有 TabItem 的面板 -->
<TabPanel
x:Name="HeaderPanel"
Grid.Row="0"
Panel.ZIndex="1"
Margin="0"
IsItemsHost="True"
Background="Transparent"
HorizontalAlignment="Left"/>
<!-- 步骤2内容区域的边框带底部圆角与 TabItem 顶部圆角呼应) -->
<Border
Grid.Row="1"
BorderThickness="1"
BorderBrush="#E0E0E0"
Background="{TemplateBinding Background}"
Margin="0"
CornerRadius="0,0,0,0"/>
<!-- 步骤3内容呈现器 -->
<ContentPresenter
Grid.Row="1"
Margin="1"
ContentSource="SelectedContent"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>