更改ScrollViewer滚动条自动隐藏计时器的默认时间

4
当ScrollViewer显示滚动条并且鼠标在大约三秒钟内未移动时,滚动条会自动隐藏。
有没有办法将这个时间设置为默认时间的更多或更少?
编辑:
重现操作:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ScrollViewer Height="500" Width="500">
        <Grid Background="Blue" Height="1000" Width="1000">                
        </Grid>            
    </ScrollViewer>
</Grid>

将光标移动到ScrollViewer上以显示滚动条。 将光标静止3秒钟以查看滚动条消失。 我想将这3秒钟更改为1秒。

编辑2

跟进问题 - 为什么此ScrollViewer的滚动条出现两次?


3
如果您查看ScrollBar样式模板,会注意到垂直/水平Root的轨道附有FadeOutThemeAnimation。您可以添加BeginTime / Duration来调整时间,但是没有暴露出来的属性可以在不深入模板的情况下完成。 - Chris W.
@ChrisW。我对这个东西不是很了解,但是在你提供的第一个链接中,所有的FadeOutThemeAnimation似乎已经有了BeginTime="0",所以我不明白还能做什么。 - ispiro
没问题。你要找的是淡入/淡出主题转换以及它们如何为每个状态调用。例如,“NoIndicator”状态的BeginTimes设置为零,因为一旦需要无指示器,则根据其内置定时功能立即开始淡出。例如,如果您注释掉该状态的元素,则轨道将保持可见。熟悉VisualStateManager的工作方式需要一些练习。使用“状态”选项卡来查看它们如何交互,Blend非常适合初学者。 - Chris W.
1个回答

4

我想我需要改变在评论中快速回答的习惯,所以从原始评论开始。对于Scrollbar的控制样式模板,在VisualStateManager部分嵌入了FadeIn / FadeOut的ThemeAnimation,嵌套在各种状态中。

由于它们是继承自动画,因此按顺序继承为:

对象 -> 依赖对象 -> 时间线

...它们支持依赖属性,例如BeginTimeDuration,允许我们更改其操作的默认行为。因此,为解决您的情况,您可以选择从VisualStateManager中完全删除它们所在的相应状态,或者您可以更改属性以更好地适应自己时间轴要求的情况。

这只是提取控件模板的问题,使用VS或Blend并显式地将更改应用于模板副本或全局覆盖即可解决。

很高兴你找到了解决方案。 :)


我以为我解决了,但实际上没有。我尝试使用这个有用的答案来解决它,但正如我在问题的评论中所说 - 所有滚动条的开始时间都已经是0了。我试图在ScrollViewer中修复它,但虽然我可以让它更快地隐藏 - 但也破坏了滚动条的使用。 - ispiro
我可能需要看看你的意思。很难想象你所描述的内容。 - Chris W.
我现在编辑了问题,包括如何重现期望和所需的行为。(感谢您的毅力。) - ispiro
1
原来我只需要编辑ScrollViewer的模板并在那里更改值即可。感谢您将我引向正确的方向! - ispiro
@ispiro,好的,我现在很忙,等到下班回家后我会加载它并为您修复,如果那时您还没有得到答复。我还没有加载模板。我的时区是中央标准时间。 - Chris W.
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接