有人可以解释这两个属性的确切含义吗?
IsHorizontalScrollChainingEnabled
IsHorizontalRailEnabled
Docs:True表示从子级到父级的水平滚动链接;否则,错误。
HorizontalScrollBarVisibility
(可见/已折叠)和HorizontalScrollMode
(启用/已禁用)对我有意义,但在什么情况下我应该使用IsHorizontalRailEnabled
?
Docs:为启用水平滚动轨道为True;否则,错误。默认值为true。
答案 0 :(得分:6)
滚动链接
<ScrollViewer Background="Red" Height="600">
<ScrollViewer Background="Blue" Margin="50,150" Height="400" IsVerticalScrollChainingEnabled="False">
<Rectangle Height="500"/>
</ScrollViewer>
</ScrollViewer>
Scroll chaining定义当内部ScrollViewer滚动到顶部或底部范围之外时,滚动内部ScrollViewer(通过触摸)是否会影响外部ScrollViewer的滚动位置。
在此示例中尝试通过触摸滚动内部ScrollViewer。无论你做什么,你只能滚动内部ScrollViewer,外部ScrollViewer的滚动位置不受影响。
<强>轨强>
如果您的ScrollViewer同时启用了水平和垂直滚动,则有时您需要定义触摸滚动行为,以便“水平”或“垂直”方向“几乎”的运动锁定到主轴。这是在移动电话上滚动网页时的标准行为 - 向上和向下滚动页面仅垂直而不是水平滚动页面(除非您的触摸动作不是“足够垂直”,其中然后,ScrollViewer将 pan 页面,而不是仅向一个方向滚动。
在手机上的Edge中尝试一下。放大网页,然后垂直滚动,并保持滚动,而无需将手指从屏幕上抬起。即使您水平移动手指(所有在同一触摸动作中),您也可以看到如何只能垂直滚动?这就是滚动轨道。
在上图中,中心点是ScrollViewer中触摸交互的起点。然后,您可以沿特定方向移动手指(或笔,无论如何)。如果您在黄色区域内移动手指,则ScrollViewer将在水平或垂直方向上“锁定”滚动动作。如果您将手指移动到蓝色区域,则ScrollViewer会断定您没有尝试在水平或垂直方向上滚动,并且会在您继续移动手指时向两个方向平移内容。我希望这有道理吗?