livia-test/Livia/Resources/Themes/LiviaScrollViewer.xaml
2025-03-28 14:31:53 +08:00

181 lines
8.7 KiB
XML

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes">
<ControlTemplate x:Key="LiviaScrollViewerTemplate"
TargetType="{x:Type ScrollViewer}">
<Grid x:Name="Grid"
Background="{TemplateBinding Background}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Rectangle x:Name="PART_Corner"
Grid.Row="1"
Grid.Column="1"
Fill="{DynamicResource MaterialDesignSelection}"
Visibility="{Binding Path=(materialDesign:ScrollViewerAssist.CornerRectangleVisibility), RelativeSource={RelativeSource TemplatedParent}}" />
<ScrollContentPresenter x:Name="PART_ScrollContentPresenter"
Grid.Row="0"
Grid.Column="0"
CanContentScroll="{TemplateBinding CanContentScroll}"
CanHorizontallyScroll="False"
CanVerticallyScroll="False"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
<Separator x:Name="PART_TopSeparator"
Grid.Row="0"
Grid.Column="0"
Margin="0"
VerticalAlignment="Top"
Background="{DynamicResource MaterialDesignSelection}"
Opacity="0.4"
Visibility="Visible" />
<Separator x:Name="PART_BottomSeparator"
Grid.Row="0"
Grid.Column="0"
Margin="0"
VerticalAlignment="Bottom"
Background="{DynamicResource MaterialDesignSelection}"
Opacity="0.4"
Visibility="Hidden" />
<ScrollBar x:Name="PART_VerticalScrollBar"
Grid.Row="0"
Grid.Column="1"
Background="{StaticResource White1Brush}"
AutomationProperties.AutomationId="VerticalScrollBar"
Cursor="Arrow"
Maximum="{TemplateBinding ScrollableHeight}"
Minimum="0"
ViewportSize="{TemplateBinding ViewportHeight}"
Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" />
<ScrollBar x:Name="PART_HorizontalScrollBar"
Grid.Row="1"
Grid.Column="0"
Background="{StaticResource White1Brush}"
AutomationProperties.AutomationId="HorizontalScrollBar"
Cursor="Arrow"
Maximum="{TemplateBinding ScrollableWidth}"
Minimum="0"
Orientation="Horizontal"
ViewportSize="{TemplateBinding ViewportWidth}"
Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" />
</Grid>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="materialDesign:ScrollViewerAssist.ShowSeparators"
Value="True" />
<Condition Property="ComputedVerticalScrollBarVisibility"
Value="Visible" />
</MultiTrigger.Conditions>
<Setter TargetName="PART_BottomSeparator"
Property="Visibility"
Value="Visible" />
</MultiTrigger>
<Trigger Property="VerticalOffset"
Value="0">
<Setter TargetName="PART_TopSeparator"
Property="Visibility"
Value="Hidden" />
</Trigger>
<Trigger Property="materialDesign:ScrollViewerAssist.ShowSeparators"
Value="False">
<Setter TargetName="PART_TopSeparator"
Property="Visibility"
Value="Hidden" />
</Trigger>
<Trigger Property="materialDesign:ScrollViewerAssist.IgnorePadding"
Value="False">
<Setter TargetName="PART_ScrollContentPresenter"
Property="Margin"
Value="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}}" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="materialDesign:ScrollViewerAssist.IsAutoHideEnabled"
Value="True" />
<Condition Property="ComputedVerticalScrollBarVisibility"
Value="Visible" />
<Condition Property="IsMouseOver"
Value="False" />
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="PART_VerticalScrollBar"
Storyboard.TargetProperty="Opacity"
To="0"
Duration="0:0:0.2" />
</Storyboard>
</BeginStoryboard>
</MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="PART_VerticalScrollBar"
Storyboard.TargetProperty="Opacity"
To="1"
Duration="0:0:0.2" />
</Storyboard>
</BeginStoryboard>
</MultiTrigger.ExitActions>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="materialDesign:ScrollViewerAssist.IsAutoHideEnabled"
Value="True" />
<Condition Property="ComputedHorizontalScrollBarVisibility"
Value="Visible" />
<Condition Property="IsMouseOver"
Value="False" />
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="PART_HorizontalScrollBar"
Storyboard.TargetProperty="Opacity"
To="0"
Duration="0:0:0.2" />
</Storyboard>
</BeginStoryboard>
</MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="PART_HorizontalScrollBar"
Storyboard.TargetProperty="Opacity"
To="1"
Duration="0:0:0.2" />
</Storyboard>
</BeginStoryboard>
</MultiTrigger.ExitActions>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<Style x:Key="LiviaScrollViewer"
TargetType="ScrollViewer">
<Setter Property="Template"
Value="{StaticResource LiviaScrollViewerTemplate}" />
<Setter Property="VerticalScrollBarVisibility"
Value="Auto"/>
</Style>
</ResourceDictionary>