You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
12 KiB
210 lines
12 KiB
<Border x:Class="SparkClient.Views.Configuration.SettingPageBase" |
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
|
xmlns:hc="https://handyorg.github.io/handycontrol" |
|
xmlns:local="clr-namespace:SparkClient.Views.Configuration" |
|
mc:Ignorable="d" CornerRadius="15" |
|
Background="#ffffff" |
|
d:DesignHeight="300" d:DesignWidth="500"> |
|
<Border.Resources> |
|
<!-- 渐变背景色,用于选项卡的不同状态 --> |
|
<LinearGradientBrush x:Key="PrimaryBlueColor" StartPoint="0,0" EndPoint="0,1"> |
|
<GradientStop Color="#40b1ff" Offset="0"/> |
|
<GradientStop Color="#3c9ce6" Offset="1"/> |
|
</LinearGradientBrush> |
|
<LinearGradientBrush x:Key="PrimaryButtonColor" StartPoint="0,0" EndPoint="0,1"> |
|
<GradientStop Color="#38c8bf" Offset="0"/> |
|
<GradientStop Color="#1fb5ac" Offset="1"/> |
|
</LinearGradientBrush> |
|
<!-- PrimaryBlueColor省略,因为这里用TabItemSelectedBrush替代,或可自行定义 --> |
|
|
|
<!-- TabItem样式 --> |
|
<Style x:Key="TabItemStyle" TargetType="TabItem"> |
|
<Setter Property="Background" > |
|
<Setter.Value> |
|
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> |
|
<GradientStop Color="#babfd2" Offset="0"/> |
|
<GradientStop Color="#babfd2" Offset="1"/> |
|
</LinearGradientBrush> |
|
</Setter.Value> |
|
</Setter> |
|
<Setter Property="Foreground" Value="#ffffff"/> |
|
<Setter Property="FontSize" Value="16" /> |
|
<Setter Property="Height" Value="40" /> |
|
<Setter Property="BorderThickness" Value="0"/> |
|
<Setter Property="Margin" Value="0 0 5 0"/> |
|
<Setter Property="Width" Value="100"/> |
|
<Setter Property="Padding" Value="10 10"/> |
|
<Setter Property="VerticalAlignment" Value="Top"/> |
|
<Setter Property="HorizontalAlignment" Value="Left"/> |
|
<Setter Property="Template"> |
|
<Setter.Value> |
|
<ControlTemplate TargetType="TabItem"> |
|
<Grid SnapsToDevicePixels="True"> |
|
<Border x:Name="TabItemBorder" |
|
CornerRadius="20" |
|
Background="{TemplateBinding Background}" |
|
BorderThickness="{TemplateBinding BorderThickness}" |
|
BorderBrush="{TemplateBinding BorderBrush}" |
|
Margin="{TemplateBinding Margin}" /> |
|
<ContentPresenter HorizontalAlignment="Center" |
|
VerticalAlignment="{TemplateBinding VerticalAlignment}" |
|
SnapsToDevicePixels="True" |
|
RecognizesAccessKey="True" |
|
Margin="{TemplateBinding Padding}" |
|
ContentSource="Header" |
|
Focusable="True"/> |
|
</Grid> |
|
<ControlTemplate.Triggers> |
|
<!-- 鼠标移入时,背景颜色渐变 --> |
|
<Trigger Property="IsMouseOver" Value="True"> |
|
|
|
</Trigger> |
|
|
|
<!-- 选中时背景渐变到选中色 --> |
|
<Trigger Property="IsSelected" Value="True"> |
|
<Trigger.EnterActions> |
|
<BeginStoryboard> |
|
<Storyboard> |
|
<ColorAnimation |
|
Storyboard.TargetName="TabItemBorder" |
|
Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)" |
|
To="#40b1ff" Duration="0:0:0.3"/> |
|
<ColorAnimation |
|
Storyboard.TargetName="TabItemBorder" |
|
Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)" |
|
To="#3c9ce6" Duration="0:0:0.3"/> |
|
</Storyboard> |
|
</BeginStoryboard> |
|
</Trigger.EnterActions> |
|
|
|
<Trigger.ExitActions> |
|
<BeginStoryboard> |
|
<Storyboard> |
|
<ColorAnimation |
|
Storyboard.TargetName="TabItemBorder" |
|
Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)" |
|
To="#babfd2" Duration="0:0:0.3"/> |
|
<ColorAnimation |
|
Storyboard.TargetName="TabItemBorder" |
|
Storyboard.TargetProperty="(Border.Background).(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)" |
|
To="#babfd2" Duration="0:0:0.3"/> |
|
</Storyboard> |
|
</BeginStoryboard> |
|
</Trigger.ExitActions> |
|
</Trigger> |
|
|
|
<!-- 未选中状态恢复默认背景 --> |
|
<Trigger Property="IsSelected" Value="False"> |
|
<Setter Property="Background" > |
|
<Setter.Value> |
|
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> |
|
<GradientStop Color="#babfd2" Offset="0"/> |
|
<GradientStop Color="#babfd2" Offset="1"/> |
|
</LinearGradientBrush> |
|
</Setter.Value> |
|
</Setter> |
|
</Trigger> |
|
</ControlTemplate.Triggers> |
|
</ControlTemplate> |
|
</Setter.Value> |
|
</Setter> |
|
</Style> |
|
|
|
<!-- TabControl样式 --> |
|
<Style x:Key="TabControlStyle" TargetType="TabControl"> |
|
<Setter Property="Background" Value="#ffffff"/> |
|
<Setter Property="BorderThickness" Value="0"/> |
|
<Setter Property="BorderBrush" Value="Transparent"/> |
|
<Setter Property="Padding" Value="10"/> |
|
<Setter Property="Margin" Value="10"/> |
|
|
|
<Setter Property="VerticalAlignment" Value="Stretch"/> |
|
<Setter Property="HorizontalAlignment" Value="Stretch"/> |
|
<Setter Property="Template"> |
|
<Setter.Value> |
|
<ControlTemplate TargetType="TabControl"> |
|
<Grid SnapsToDevicePixels="True"> |
|
<Grid.RowDefinitions> |
|
<RowDefinition Height="50"/> |
|
<RowDefinition Height="*"/> |
|
</Grid.RowDefinitions> |
|
<Grid Grid.Row="0"> |
|
<Grid.ColumnDefinitions> |
|
<ColumnDefinition/> |
|
<ColumnDefinition Width="Auto"/> |
|
</Grid.ColumnDefinitions> |
|
|
|
<!--TabPanel--> |
|
<TabPanel Grid.Row="0" |
|
Background="Transparent" |
|
IsItemsHost="True"/> |
|
|
|
<!-- 保存按钮在右侧 --> |
|
<Button x:Name="SaveButton" Grid.Column="1" Padding="0" Margin="0" Height="40" |
|
BorderThickness="0" Background="Transparent" FocusVisualStyle="{x:Null}" Command="{Binding SaveCommand}"> |
|
<Border |
|
HorizontalAlignment="Right" |
|
VerticalAlignment="Center" |
|
Margin="0,0,0,0" |
|
Padding="10, 10" |
|
Width="100" |
|
BorderThickness="0" |
|
Background="{StaticResource PrimaryButtonColor}" |
|
CornerRadius="20"> |
|
<TextBlock FontSize="16" Text="{StaticResource SystemSettingSave}" TextAlignment="Center" Foreground="#ffffff"></TextBlock> |
|
</Border> |
|
</Button> |
|
</Grid> |
|
|
|
|
|
<!-- 内容区域,添加淡入淡出动画 --> |
|
<Border x:Name="ContentBorder" |
|
Grid.Row="1" |
|
CornerRadius="5" |
|
BorderThickness="{TemplateBinding BorderThickness}" |
|
BorderBrush="{TemplateBinding BorderBrush}" |
|
Background="{TemplateBinding Background}"> |
|
<ContentPresenter x:Name="PART_SelectedContentHost" |
|
ContentSource="SelectedContent" |
|
SnapsToDevicePixels="True" |
|
Margin="{TemplateBinding Padding}" |
|
Opacity="0"/> |
|
</Border> |
|
</Grid> |
|
<!-- 当选项卡内容切换时触发动画 --> |
|
<ControlTemplate.Triggers> |
|
<!-- 使用EventTrigger监听TabControl的SelectionChanged事件 --> |
|
<EventTrigger RoutedEvent="TabControl.SelectionChanged"> |
|
<BeginStoryboard> |
|
<Storyboard> |
|
<!-- 先瞬间变为透明,再渐入 --> |
|
<!-- <DoubleAnimation Storyboard.TargetName="PART_SelectedContentHost" --> |
|
<!-- Storyboard.TargetProperty="Opacity" --> |
|
<!-- To="0" Duration="0:0:0"/> --> |
|
<DoubleAnimation Storyboard.TargetName="PART_SelectedContentHost" |
|
Storyboard.TargetProperty="Opacity" |
|
To="1" Duration="0:0:0.5" BeginTime="0:0:0.1"/> |
|
</Storyboard> |
|
</BeginStoryboard> |
|
</EventTrigger> |
|
</ControlTemplate.Triggers> |
|
</ControlTemplate> |
|
</Setter.Value> |
|
</Setter> |
|
</Style> |
|
</Border.Resources> |
|
<Grid> |
|
<TabControl Style="{StaticResource TabControlStyle}" > |
|
<TabItem Header="{StaticResource SystemSettingCustomSet}" Style="{DynamicResource TabItemStyle}"> |
|
<ContentControl ClipToBounds="True" Content="{Binding CustomSetContent}"/> |
|
</TabItem> |
|
|
|
<TabItem Header="{StaticResource SystemSettingModelSet}" Style="{DynamicResource TabItemStyle}"> |
|
<ContentControl ClipToBounds="True" Content="{Binding ModelColorSetContent}"/> |
|
</TabItem> |
|
</TabControl> |
|
</Grid> |
|
</Border>
|
|
|