Themes/MaterialDesignTheme.ScrollViewer.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf"> <ControlTemplate x:Key="MaterialDesignScrollViewerTemplate" 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 MaterialDesign.Brush.ScrollBar.Foreground}" Visibility="{Binding Path=(wpf: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 MaterialDesign.Brush.Separator.Background}" Opacity="0.4" Visibility="Visible" /> <Separator x:Name="PART_BottomSeparator" Grid.Row="0" Grid.Column="0" Margin="0" VerticalAlignment="Bottom" Background="{DynamicResource MaterialDesign.Brush.Separator.Background}" Opacity="0.4" Visibility="Hidden" /> <ScrollBar x:Name="PART_VerticalScrollBar" Grid.Row="0" Grid.Column="1" 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" 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="wpf: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="wpf:ScrollViewerAssist.ShowSeparators" Value="False"> <Setter TargetName="PART_TopSeparator" Property="Visibility" Value="Hidden" /> </Trigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="wpf:ScrollViewerAssist.IgnorePadding" Value="False" /> <Condition Property="wpf:ScrollViewerAssist.PaddingMode" Value="Default" /> </MultiTrigger.Conditions> <MultiTrigger.Setters> <Setter TargetName="PART_ScrollContentPresenter" Property="Margin" Value="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}}" /> </MultiTrigger.Setters> </MultiTrigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="wpf: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="wpf: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="MaterialDesignScrollViewer" TargetType="ScrollViewer"> <Setter Property="Template" Value="{StaticResource MaterialDesignScrollViewerTemplate}" /> <Style.Triggers> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="wpf:ScrollViewerAssist.IgnorePadding" Value="False" /> <Condition Property="wpf:ScrollViewerAssist.PaddingMode" Value="Content" /> </MultiTrigger.Conditions> <MultiTrigger.Setters> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate> <ContentControl Margin="{Binding Padding, RelativeSource={RelativeSource AncestorType=ScrollViewer}}"> <ContentPresenter Content="{Binding}" /> </ContentControl> </DataTemplate> </Setter.Value> </Setter> </MultiTrigger.Setters> </MultiTrigger> </Style.Triggers> </Style> </ResourceDictionary> |