你为什么不直接设置VerticalScrollBarVisibility
和/或HorizontalScrollBarVisibility
你的实例的ScrollViewer
to Visible
,而不是从样式中删除褪色行为?
<ScrollViewer VerticalScrollBarVisibility="Visible">
<!-- ScrollViewer Content -->
</ScrollViewer>
评论后编辑:
我想我想出了一个“解决方案”。我不确定这是否是实现此目标的最佳方法,但它似乎给出了您想要的结果。
为以下内容创建自定义样式ScrollViewer
,然后为垂直/水平制作一个ScrollBar
本身(使用 Blend,我猜你之前就是这样做的)。
获得默认样式的副本后,编辑以下行:
<VisualState x:Name="NoIndicator">
<Storyboard>
<FadeOutThemeAnimation BeginTime="0" TargetName="HorizontalPanningRoot"/>
<FadeOutThemeAnimation BeginTime="0" TargetName="VerticalPanningRoot"/>
<Fade**In**ThemeAnimation BeginTime="0" TargetName="HorizontalRoot"/>
<Fade**In**ThemeAnimation BeginTime="0" TargetName="VerticalRoot"/>
</Storyboard>
</VisualState>
我的猜测是,这确实导致了ScrollBar
当不与其交互时淡入,这意味着它将始终可见。
这是相关的 ScrollViewer XAML(我无法将整个内容放入答案中)。请注意,ScrollViewer 设置为使用我的自定义样式ScrollViewerStyle1
,然后在该样式中VerticalScrollBar
设置为我的ScrollBar
定制风格ScrollBarCustomStyle1
,其中NoIndicator VisualState
被修改。如果需要,您可以对水平滚动条执行相同的操作。
滚动查看器风格:
<ScrollContentPresenter x:Name="ScrollContentPresenter" Grid.ColumnSpan="2" ContentTemplate="{TemplateBinding ContentTemplate}" Margin="{TemplateBinding Padding}" Grid.RowSpan="2"/>
<ScrollBar x:Name="VerticalScrollBar" Grid.Column="1" HorizontalAlignment="Right" IsTabStop="False" Maximum="{TemplateBinding ScrollableHeight}" Orientation="Vertical" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{TemplateBinding VerticalOffset}" ViewportSize="{TemplateBinding ViewportHeight}" Style="{StaticResource ScrollBarStyle1}"/>
<ScrollBar x:Name="HorizontalScrollBar" IsTabStop="False" Maximum="{TemplateBinding ScrollableWidth}" Orientation="Horizontal" Grid.Row="1" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{TemplateBinding HorizontalOffset}" ViewportSize="{TemplateBinding ViewportWidth}"/>
<Border x:Name="ScrollBarSeparator" BorderBrush="{ThemeResource ScrollBarTrackBorderThemeBrush}" BorderThickness="0,0,1,1" Background="{ThemeResource ScrollBarTrackBackgroundThemeBrush}" Grid.Column="1" Grid.Row="1"/>