Files
HandyControl/src/Shared/HandyControl_Shared/Themes/Styles/ScrollViewer.xaml
T
2023-07-30 16:20:07 +08:00

56 lines
4.0 KiB
XML

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:hc="clr-namespace:HandyControl.Controls">
<!--default style-->
<Style BasedOn="{StaticResource ScrollViewerNativeBaseStyle}" TargetType="ScrollViewer"/>
<Style BasedOn="{StaticResource ScrollViewerBaseStyle}" TargetType="hc:ScrollViewer"/>
<Style x:Key="ScrollViewerUpDownRepeatButtonStyle" BasedOn="{StaticResource RepeatButtonIcon}" TargetType="RepeatButton">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="Height" Value="10"/>
<Setter Property="Padding" Value="0,2"/>
<Setter Property="Foreground" Value="{DynamicResource PrimaryTextBrush}"/>
<Setter Property="ClickMode" Value="Hover"/>
</Style>
<ControlTemplate x:Key="ScrollViewerUpDownControlTemplate" TargetType="ScrollViewer">
<Grid x:Name="Grid" Background="{TemplateBinding Background}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<RepeatButton Style="{StaticResource ScrollViewerUpDownRepeatButtonStyle}" hc:IconElement.Geometry="{StaticResource UpGeometry}" CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" Command="{x:Static ScrollBar.LineUpCommand}">
<RepeatButton.Visibility>
<MultiBinding FallbackValue="Visibility.Collapsed" Converter="{StaticResource MenuScrollingVisibilityConverter}" ConverterParameter="0">
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="ComputedVerticalScrollBarVisibility" />
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="VerticalOffset" />
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="ExtentHeight" />
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="ViewportHeight" />
</MultiBinding>
</RepeatButton.Visibility>
</RepeatButton>
<ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" CanHorizontallyScroll="False" CanVerticallyScroll="False" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Margin="{TemplateBinding Padding}" Grid.Row="1"/>
<RepeatButton Style="{StaticResource ScrollViewerUpDownRepeatButtonStyle}" hc:IconElement.Geometry="{StaticResource DownGeometry}" CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" Grid.Row="2" Command="{x:Static ScrollBar.LineDownCommand}">
<RepeatButton.Visibility>
<MultiBinding FallbackValue="Visibility.Collapsed" Converter="{StaticResource MenuScrollingVisibilityConverter}" ConverterParameter="100">
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="ComputedVerticalScrollBarVisibility" />
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="VerticalOffset" />
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="ExtentHeight" />
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="ViewportHeight" />
</MultiBinding>
</RepeatButton.Visibility>
</RepeatButton>
</Grid>
</ControlTemplate>
<Style x:Key="ScrollViewerUpDown" TargetType="ScrollViewer">
<Setter Property="VerticalScrollBarVisibility" Value="{Binding Path=(hc:ScrollViewer.VerticalScrollBarVisibility),RelativeSource={RelativeSource TemplatedParent}}" />
<Setter Property="Focusable" Value="False"/>
<Setter Property="Template" Value="{StaticResource ScrollViewerUpDownControlTemplate}"/>
</Style>
</ResourceDictionary>