【问题标题】:Change default time of auto-hide timer of ScrollViewer scrollbars更改 ScrollViewer 滚动条的自动隐藏计时器的默认时间
【发布时间】:2016-09-20 05:49:42
【问题描述】:

当 ScrollViewer 显示滚动条,并且光标在 3 秒左右没有移动时,滚动条会自动隐藏。

有没有办法将该时间设置为大于或小于默认时间?

编辑

复制如下:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ScrollViewer Height="500" Width="500">
        <Grid Background="Blue" Height="1000" Width="1000">                
        </Grid>            
    </ScrollViewer>
</Grid>

将光标移到 ScrollViewer 上以显示滚动条。让光标保持不动 3 秒钟以查看滚动条消失。我想把这 3 秒改成 1。

编辑 2

后续问题 - Why does this ScrollViewer's ScrollBars appear twice?

【问题讨论】:

  • 如果您去查看ScrollBar style template,请注意有FadeOutThemeAnimation 附加到轨道的垂直/水平根上。您可以添加 BeginTime/Duration 来调整时间,但没有公开的属性可以在不深入模板的情况下执行此操作。
  • @ChrisW。我不太了解这些东西,但是所有 FadeOutThemeAnimation 似乎都已经有 BeginTime="0" (在您的第一个链接中),所以我不明白可以做什么。
  • 不用担心。您正在寻找的是 FadeIn/FadeOut 主题转换以及如何为每个状态调用它们。例如,“NoIndicator”状态将 BeginTimes 设置为零,因为只要没有指示器是必要的,它就会根据其内置的计时功能立即开始淡出。例如,如果您要注释掉该状态的元素,那么轨迹将保持可见。需要一点练习才能习惯 VisualStateManager 的工作方式。在第一次学习时,使用“状态”标签查看它们如何交互,Blend 非常棒。

标签: c# xaml win-universal-app uwp uwp-xaml


【解决方案1】:

我想我需要开始改掉在 cmets 中快速回答的习惯了;

从上面的原始 cmets 进行。 Scrollbar 的控件样式模板在 VisualStateManager 部分中嵌入了以各种状态嵌套的 FadeIn/FadeOut 的 ThemeAnimation。

因为他们是animations 的继承顺序;

对象 -> DependencyObject -> 时间线

...它们确实支持诸如BeginTimeDuration 之类的依赖属性,这允许我们更改它们操作的默认行为。因此,要解决您的情况,您可以选择将它们完全从 VisualStateManager 中的各自状态中删除,或者您可以更改属性以更好地满足您自己的时间线要求。

这样做只需使用 VS 或 Blend 提取控件模板,然后将更改显式应用于模板副本或全局覆盖默认值。

很高兴您找到了补救措施。 :)

【讨论】:

  • quickie answers in comments 没有错。我只是想给你荣誉(-令人垂涎的声誉点:))。再次感谢。
  • 我以为我解决了,但没有。我尝试使用这个有用的答案来执行此操作,但正如我在对问题的评论中所说 - 滚动条的所有开始时间已经为 0。我尝试在 ScrollViewer 中解决这个问题,但是虽然我可以让它更快地隐藏 - 它也破坏了滚动条的使用。
  • 我可能要看看你的意思。无法想象您所描述的内容。
  • 我现在编辑了问题,包括如何重现预期和期望的行为。 (感谢您的坚持。)
  • 原来我只需要编辑 ScrollViewer 的模板并更改那里的值。感谢您让我走上正确的道路!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
相关资源
最近更新 更多