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