ScrollViewer IsHorizo​​ntalScrollChainingEnabled和IsHorizo​​ntalRailEnabled功能

时间:2016-10-31 08:21:59

标签: xaml uwp

有人可以解释这两个属性的确切含义吗?

IsHorizontalScrollChainingEnabled
IsHorizontalRailEnabled

  1. 我尝试使用嵌套ScrollViewers的第一个,但无法找到功能上的任何差异。默认情况下是启用还是禁用?它究竟做了什么,据我所知,没有关于文档或Google可用功能的信息。
      

    Docs:True表示从子级到父级的水平滚动链接;否则,错误。

  2. 两个属性HorizontalScrollBarVisibility(可见/已折叠)和HorizontalScrollMode(启用/已禁用)对我有意义,但在什么情况下我应该使用IsHorizontalRailEnabled
      

    Docs:为启用水平滚动轨道为True;否则,错误。默认值为true。

1 个答案:

答案 0 :(得分:6)

滚动链接

<ScrollViewer Background="Red" Height="600">
    <ScrollViewer Background="Blue" Margin="50,150" Height="400" IsVerticalScrollChainingEnabled="False">
        <Rectangle Height="500"/>
    </ScrollViewer>
</ScrollViewer>
  • 外部ScrollViewer高600像素,但内容高700像素。
  • 天生的ScrollViewer高400像素,但内容高达500像素。
  • 因此,两个ScrollViewers都可以垂直滚动显示另外100px的内容不可见。

Scroll chaining定义当内部ScrollViewer滚动到顶部或底部范围之外时,滚动内部ScrollViewer(通过触摸)是否会影响外部ScrollViewer的滚动位置。

在此示例中尝试通过触摸滚动内部ScrollViewer。无论你做什么,你只能滚动内部ScrollViewer,外部ScrollViewer的滚动位置不受影响。

<强>轨

如果您的ScrollViewer同时启用了水平和垂直滚动,则有时您需要定义触摸滚动行为,以便“水平”或“垂直”方向“几乎”的运动锁定到主轴。这是在移动电话上滚动网页时的标准行为 - 向上和向下滚动页面垂直而不是水平滚动页面(除非您的触摸动作不是“足够垂直”,其中然后,ScrollViewer将 pan 页面,而不是仅向一个方向滚动

在手机上的Edge中尝试一下。放大网页,然后垂直滚动,并保持滚动,而无需将手指从屏幕上抬起。即使您水平移动手指(所有在同一触摸动作中),您也可以看到如何只能垂直滚动?这就是滚动轨道。

Diagram

在上图中,中心点是ScrollViewer中触摸交互的起点。然后,您可以沿特定方向移动手指(或笔,无论如何)。如果您在黄色区域内移动手指,则ScrollViewer将在水平垂直方向上“锁定”滚动动作。如果您将手指移动到蓝色区域,则ScrollViewer会断定您没有尝试在水平或垂直方向上滚动,并且会在您继续移动手指时向两个方向平移内容。我希望这有道理吗?