Last active
May 10, 2019 10:26
-
-
Save billw2012/cdf997b35b93c51bd18af0f645c8d3e5 to your computer and use it in GitHub Desktop.
ScrollViewer with top and bottom shadows to indicate out of view content (requires a MultiValueConverter to compare values).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Style x:Key="VerticalScrollViewer" TargetType="{x:Type ScrollViewer}"> | |
<Setter Property="OverridesDefaultStyle" Value="True" /> | |
<Setter Property="Template"> | |
<Setter.Value> | |
<ControlTemplate TargetType="{x:Type ScrollViewer}"> | |
<Grid> | |
<Grid.ColumnDefinitions> | |
<ColumnDefinition /> | |
<ColumnDefinition Width="Auto" /> | |
</Grid.ColumnDefinitions> | |
<Grid.RowDefinitions> | |
<RowDefinition /> | |
<RowDefinition Height="Auto" /> | |
</Grid.RowDefinitions> | |
<Grid Grid.Row="0" Grid.Column="0"> | |
<Border | |
Panel.ZIndex="1" | |
BorderThickness="0" | |
ClipToBounds="True"> | |
<Grid> | |
<Border | |
Margin="-20,-2,-20,-20" | |
BorderBrush="Black" | |
BorderThickness="2"> | |
<Border.Effect> | |
<DropShadowEffect | |
BlurRadius="10" | |
Opacity="1" | |
ShadowDepth="0" /> | |
</Border.Effect> | |
<Border.Style> | |
<Style TargetType="Border"> | |
<Style.Triggers> | |
<DataTrigger Value="True"> | |
<DataTrigger.Binding> | |
<MultiBinding Converter="{StaticResource MultiValueEqualityConverter}"> | |
<Binding | |
ElementName="PART_VerticalScrollBar" | |
Mode="OneWay" | |
Path="Value" /> | |
<Binding | |
ElementName="PART_VerticalScrollBar" | |
Mode="OneWay" | |
Path="Minimum" /> | |
</MultiBinding> | |
</DataTrigger.Binding> | |
<Setter Property="Visibility" Value="Hidden" /> | |
</DataTrigger> | |
</Style.Triggers> | |
</Style> | |
</Border.Style> | |
</Border> | |
<Border | |
Margin="-20,-20,-20,-2" | |
BorderBrush="Black" | |
BorderThickness="2"> | |
<Border.Effect> | |
<DropShadowEffect | |
BlurRadius="10" | |
Opacity="1" | |
ShadowDepth="0" /> | |
</Border.Effect> | |
<Border.Style> | |
<Style TargetType="Border"> | |
<Style.Triggers> | |
<DataTrigger Value="True"> | |
<DataTrigger.Binding> | |
<MultiBinding Converter="{StaticResource MultiValueEqualityConverter}"> | |
<Binding | |
ElementName="PART_VerticalScrollBar" | |
Mode="OneWay" | |
Path="Value" /> | |
<Binding | |
ElementName="PART_VerticalScrollBar" | |
Mode="OneWay" | |
Path="Maximum" /> | |
</MultiBinding> | |
</DataTrigger.Binding> | |
<Setter Property="Visibility" Value="Hidden" /> | |
</DataTrigger> | |
</Style.Triggers> | |
</Style> | |
</Border.Style> | |
</Border> | |
</Grid> | |
</Border> | |
<ScrollContentPresenter Panel.ZIndex="0" /> | |
</Grid> | |
<ScrollBar | |
x:Name="PART_VerticalScrollBar" | |
Grid.Row="0" | |
Grid.Column="1" | |
Maximum="{TemplateBinding ScrollableHeight}" | |
ViewportSize="{TemplateBinding ViewportHeight}" | |
Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" | |
Value="{TemplateBinding VerticalOffset}" /> | |
<ScrollBar | |
x:Name="PART_HorizontalScrollBar" | |
Grid.Row="1" | |
Grid.Column="0" | |
Maximum="{TemplateBinding ScrollableWidth}" | |
Orientation="Horizontal" | |
ViewportSize="{TemplateBinding ViewportWidth}" | |
Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" | |
Value="{TemplateBinding HorizontalOffset}" /> | |
</Grid> | |
</ControlTemplate> | |
</Setter.Value> | |
</Setter> | |
</Style> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment