Files
Shrlalgo.RvKits/WPFDark/StandardControls/TabControl.xaml

422 lines
25 KiB
Plaintext
Raw Normal View History

2025-07-11 09:20:23 +08:00
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpf="clr-namespace:WPFDark"
xmlns:controls="clr-namespace:WPFDark.Controls"
xmlns:internal="clr-namespace:WPFDark.StandardControls.Internal"
xmlns:internals="clr-namespace:WPFDark.Internals"
xmlns:standardControls="clr-namespace:WPFDark.StandardControls">
<ResourceDictionary.MergedDictionaries>
<internals:SharedResourceDictionary Source="pack://application:,,,/WPFDark;component/StandardControls/Button.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="TabAddButtonStyle"
BasedOn="{StaticResource SharpButtonStyle}"
TargetType="{x:Type Button}">
<Setter Property="Content" Value="+" />
<Setter Property="FontSize" Value="18" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="Padding" Value="6,-2,7,0" />
<Setter Property="Margin" Value="0" />
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="{DynamicResource ButtonActiveForegroundBrushKey}" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Foreground" Value="{DynamicResource ButtonPressedForegroundBrushKey}" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource InactiveForegroundBrushKey}" />
<Setter Property="Background" Value="Transparent" />
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type TabControl}">
<Setter Property="Padding" Value="2" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Background" Value="{DynamicResource PanelBackgroundBrushKey}" />
<Setter Property="BorderBrush" Value="{DynamicResource TextBoxBorderBrushKey}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabControl}">
<Grid x:Name="templateRoot"
KeyboardNavigation.TabNavigation="Local"
SnapsToDevicePixels="True">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="ColumnDefinition0" />
<ColumnDefinition x:Name="ColumnDefinition1" Width="0" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition x:Name="RowDefinition0" Height="Auto" />
<RowDefinition x:Name="RowDefinition1" Height="*" />
</Grid.RowDefinitions>
<DockPanel x:Name="headerPanel"
Grid.Row="0"
Grid.Column="0"
Panel.ZIndex="1">
<internal:TabPanelInternal x:Name="TabPanel"
HorizontalAlignment="Left"
Background="Transparent"
DockPanel.Dock="Left"
IsItemsHost="True"
KeyboardNavigation.TabIndex="1" />
<Button x:Name="AddButton"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Mode=OneWay, Path=(standardControls:TabControlAttachedProperties.AddCommand)}"
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, Mode=OneWay, Path=(standardControls:TabControlAttachedProperties.AddCommandParameter)}"
Style="{StaticResource TabAddButtonStyle}" />
</DockPanel>
<controls:BiaClippingBorder x:Name="contentPanel"
Grid.Row="1"
Grid.Column="0"
Padding="4,0"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
KeyboardNavigation.DirectionalNavigation="Contained"
KeyboardNavigation.TabIndex="2"
KeyboardNavigation.TabNavigation="Local">
<ContentPresenter x:Name="PART_SelectedContentHost"
Margin="{TemplateBinding Padding}"
ContentSource="SelectedContent"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</controls:BiaClippingBorder>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="standardControls:TabControlAttachedProperties.IsVisibleAddButton" Value="True">
<Setter TargetName="AddButton" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="TabStripPlacement" Value="Top">
<Setter TargetName="contentPanel" Property="CornerRadius">
<Setter.Value>
<CornerRadius BottomLeft="{x:Static wpf:Boxes.GroupCornerRadiusPrim}"
BottomRight="{x:Static wpf:Boxes.GroupCornerRadiusPrim}"
TopLeft="0.0"
TopRight="0.0" />
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="TabStripPlacement" Value="Bottom">
<Setter TargetName="contentPanel" Property="CornerRadius">
<Setter.Value>
<CornerRadius BottomLeft="0.0"
BottomRight="0.0"
TopLeft="{x:Static wpf:Boxes.GroupCornerRadiusPrim}"
TopRight="{x:Static wpf:Boxes.GroupCornerRadiusPrim}" />
</Setter.Value>
</Setter>
<Setter TargetName="headerPanel" Property="Grid.Row" Value="1" />
<Setter TargetName="contentPanel" Property="Grid.Row" Value="0" />
<Setter TargetName="RowDefinition0" Property="Height" Value="*" />
<Setter TargetName="RowDefinition1" Property="Height" Value="Auto" />
<Setter TargetName="AddButton" Property="VerticalAlignment" Value="Top" />
</Trigger>
<Trigger Property="TabStripPlacement" Value="Left">
<Setter TargetName="contentPanel" Property="CornerRadius">
<Setter.Value>
<CornerRadius BottomLeft="0.0"
BottomRight="{x:Static wpf:Boxes.GroupCornerRadiusPrim}"
TopLeft="0.0"
TopRight="{x:Static wpf:Boxes.GroupCornerRadiusPrim}" />
</Setter.Value>
</Setter>
<Setter TargetName="headerPanel" Property="Grid.Row" Value="0" />
<Setter TargetName="contentPanel" Property="Grid.Row" Value="0" />
<Setter TargetName="headerPanel" Property="Grid.Column" Value="0" />
<Setter TargetName="contentPanel" Property="Grid.Column" Value="1" />
<Setter TargetName="ColumnDefinition0" Property="Width" Value="Auto" />
<Setter TargetName="ColumnDefinition1" Property="Width" Value="*" />
<Setter TargetName="RowDefinition0" Property="Height" Value="*" />
<Setter TargetName="RowDefinition1" Property="Height" Value="0" />
<Setter TargetName="TabPanel" Property="DockPanel.Dock" Value="Top" />
<Setter TargetName="AddButton" Property="HorizontalAlignment" Value="Right" />
<Setter TargetName="AddButton" Property="VerticalAlignment" Value="Top" />
</Trigger>
<Trigger Property="TabStripPlacement" Value="Right">
<Setter TargetName="contentPanel" Property="CornerRadius">
<Setter.Value>
<CornerRadius BottomLeft="{x:Static wpf:Boxes.GroupCornerRadiusPrim}"
BottomRight="0.0"
TopLeft="{x:Static wpf:Boxes.GroupCornerRadiusPrim}"
TopRight="0.0" />
</Setter.Value>
</Setter>
<Setter TargetName="headerPanel" Property="Grid.Row" Value="0" />
<Setter TargetName="contentPanel" Property="Grid.Row" Value="0" />
<Setter TargetName="headerPanel" Property="Grid.Column" Value="1" />
<Setter TargetName="contentPanel" Property="Grid.Column" Value="0" />
<Setter TargetName="ColumnDefinition0" Property="Width" Value="*" />
<Setter TargetName="ColumnDefinition1" Property="Width" Value="Auto" />
<Setter TargetName="RowDefinition0" Property="Height" Value="*" />
<Setter TargetName="RowDefinition1" Property="Height" Value="0" />
<Setter TargetName="TabPanel" Property="DockPanel.Dock" Value="Top" />
<Setter TargetName="AddButton" Property="HorizontalAlignment" Value="Left" />
<Setter TargetName="AddButton" Property="VerticalAlignment" Value="Top" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="{DynamicResource InactiveBackgroundBrushKey}" />
<Setter Property="BorderBrush" Value="{DynamicResource InactiveBorderBrushKey}" />
<Setter Property="Foreground" Value="{DynamicResource InactiveForegroundBrushKey}" />
</Trigger>
<Trigger Property="standardControls:TabControlAttachedProperties.IsVisibleAddButton" Value="True">
<Setter Property="Visibility" Value="Visible" />
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="TabItemFocusVisualStyle">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="2"
SnapsToDevicePixels="True"
Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"
StrokeDashArray="1 2"
StrokeThickness="1.0" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="TabItemTextBlockStyle" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="{DynamicResource ForegroundBrushKey}" />
<Setter Property="Margin" Value="0" />
<Setter Property="Padding" Value="0" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" Value="False">
<Setter Property="TextElement.Foreground" Value="{DynamicResource SemiForegroundBrushKey}" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" Value="False" />
<Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" Value="True" />
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="TextElement.Foreground" Value="{DynamicResource SemiForegroundBrushKey.MouseOver}" />
</MultiDataTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource InactiveForegroundBrushKey}" />
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="TabItemBiaTextBlockStyle" TargetType="{x:Type controls:BiaTextBlock}">
<Setter Property="Foreground" Value="{DynamicResource ForegroundBrushKey}" />
<Setter Property="Margin" Value="0" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" Value="False">
<Setter Property="Foreground" Value="{DynamicResource SemiForegroundBrushKey}" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" Value="False" />
<Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" Value="True" />
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="Foreground" Value="{DynamicResource SemiForegroundBrushKey.MouseOver}" />
</MultiDataTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource InactiveForegroundBrushKey}" />
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="TabItemBiaEditableTextBlockStyle" TargetType="{x:Type controls:BiaEditableTextBlock}">
<Setter Property="Foreground" Value="{DynamicResource ForegroundBrushKey}" />
<Setter Property="Margin" Value="0" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" Value="False">
<Setter Property="Foreground" Value="{DynamicResource SemiForegroundBrushKey}" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" Value="False" />
<Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" Value="True" />
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="Foreground" Value="{DynamicResource SemiForegroundBrushKey.MouseOver}" />
</MultiDataTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource InactiveForegroundBrushKey}" />
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type TabItem}">
<Setter Property="FocusVisualStyle" Value="{StaticResource TabItemFocusVisualStyle}" />
<Setter Property="Background" Value="{DynamicResource PanelBackgroundBrushKey}" />
<Setter Property="BorderBrush" Value="{DynamicResource TextBoxBorderBrushKey}" />
<Setter Property="Margin" Value="0" />
<Setter Property="Padding" Value="0" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Stretch" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<controls:BiaClippingBorder x:Name="MainBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<Border x:Name="SelectionBorder" BorderBrush="{DynamicResource Item.SelectedActive.Background}">
<ContentPresenter x:Name="contentPresenter"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
VerticalAlignment="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
ContentSource="Header"
Focusable="False"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
<ContentPresenter.Resources>
<Style BasedOn="{StaticResource TabItemTextBlockStyle}" TargetType="{x:Type TextBlock}" />
<Style BasedOn="{StaticResource TabItemBiaTextBlockStyle}" TargetType="{x:Type controls:BiaTextBlock}" />
</ContentPresenter.Resources>
</ContentPresenter>
</Border>
</controls:BiaClippingBorder>
<ControlTemplate.Triggers>
<Trigger Property="TabStripPlacement" Value="Top">
<Setter Property="Margin" Value="0,0,0,-1" />
<Setter Property="Padding" Value="10,3" />
<Setter TargetName="MainBorder" Property="CornerRadius">
<Setter.Value>
<CornerRadius BottomLeft="0.0"
BottomRight="0.0"
TopLeft="{x:Static wpf:Boxes.BasicCornerRadiusPrim}"
TopRight="{x:Static wpf:Boxes.BasicCornerRadiusPrim}" />
</Setter.Value>
</Setter>
<Setter TargetName="MainBorder" Property="BorderThickness" Value="1,1,1,0" />
<Setter TargetName="SelectionBorder" Property="BorderThickness" Value="0,1,0,0" />
</Trigger>
<Trigger Property="TabStripPlacement" Value="Bottom">
<Setter Property="Margin" Value="0,-1,0,0" />
<Setter Property="Padding" Value="10,3" />
<Setter TargetName="MainBorder" Property="CornerRadius">
<Setter.Value>
<CornerRadius BottomLeft="{x:Static wpf:Boxes.BasicCornerRadiusPrim}"
BottomRight="{x:Static wpf:Boxes.BasicCornerRadiusPrim}"
TopLeft="0.0"
TopRight="0.0" />
</Setter.Value>
</Setter>
<Setter TargetName="MainBorder" Property="BorderThickness" Value="1,0,1,1" />
<Setter TargetName="SelectionBorder" Property="BorderThickness" Value="0,0,0,1" />
</Trigger>
<Trigger Property="TabStripPlacement" Value="Left">
<Setter Property="Margin" Value="0,0,-1,0" />
<Setter Property="Padding" Value="10,3" />
<Setter TargetName="MainBorder" Property="CornerRadius">
<Setter.Value>
<CornerRadius BottomLeft="{x:Static wpf:Boxes.BasicCornerRadiusPrim}"
BottomRight="0.0"
TopLeft="{x:Static wpf:Boxes.BasicCornerRadiusPrim}"
TopRight="0.0" />
</Setter.Value>
</Setter>
<Setter TargetName="MainBorder" Property="BorderThickness" Value="1,1,0,1" />
<Setter TargetName="SelectionBorder" Property="BorderThickness" Value="1,0,0,0" />
</Trigger>
<Trigger Property="TabStripPlacement" Value="Right">
<Setter Property="Margin" Value="-1,0,0,0" />
<Setter Property="Padding" Value="10,3" />
<Setter TargetName="MainBorder" Property="CornerRadius">
<Setter.Value>
<CornerRadius BottomLeft="0.0"
BottomRight="{x:Static wpf:Boxes.BasicCornerRadiusPrim}"
TopLeft="0.0"
TopRight="{x:Static wpf:Boxes.BasicCornerRadiusPrim}" />
</Setter.Value>
</Setter>
<Setter TargetName="MainBorder" Property="BorderThickness" Value="0,1,1,1" />
<Setter TargetName="SelectionBorder" Property="BorderThickness" Value="0,0,1,0" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{DynamicResource PanelBackgroundBrushKey}" />
<Setter Property="BorderBrush" Value="{DynamicResource TextBoxBorderBrushKey}" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter TargetName="SelectionBorder" Property="BorderBrush" Value="Transparent" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsEnabled" Value="False" />
<Condition Property="IsSelected" Value="False" />
</MultiTrigger.Conditions>
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter TargetName="SelectionBorder" Property="BorderBrush" Value="Transparent" />
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsEnabled" Value="False" />
<Condition Property="IsSelected" Value="True" />
</MultiTrigger.Conditions>
<Setter Property="Background" Value="{DynamicResource BackgroundBackgroundBrushKey}" />
<Setter Property="BorderBrush" Value="{DynamicResource TextBoxBorderBrushKey}" />
<Setter TargetName="SelectionBorder" Property="BorderBrush" Value="Transparent" />
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>