谁能解释一下这两个属性的具体作用?
IsHorizontalScrollChainingEnabled
IsHorizontalRailEnabled
- 我用嵌套的 ScrollViewers 尝试了第一个,但在功能上找不到任何差异。默认情况下是启用还是禁用?它到底做了什么,据我所知,文档或谷歌中没有关于功能的信息。
Docs: True to enable horizontal scroll chaining from child to parent; otherwise, false.
HorizontalScrollBarVisibility
(Visible/Collapsed) 和HorizontalScrollMode
(Enabled/Disabled) 这两个属性对我来说很有意义,但在什么情况下我应该使用IsHorizontalRailEnabled
?Docs: True to enable the horizontal scroll rail; otherwise, false. The default is true.
最佳答案
滚动链接
<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 像素。
- 因此,两个 ScrollViewer 都可以垂直滚动以显示额外 100 像素的不可见内容。
滚动链定义当内部 ScrollViewer 滚动超出顶部或底部范围时,滚动内部 ScrollViewer(通过触摸)是否会影响外部 ScrollViewer 的滚动位置。
在本例中尝试通过触摸滚动内部 ScrollViewer。不管你做什么,你只能滚动内部的 ScrollViewer,外部的 ScrollViewer 的滚动位置不受影响。
铁路
如果您有一个启用了水平和垂直滚动的 ScrollViewer,那么有时您希望定义触摸滚动行为,以便将“几乎”在水平或垂直方向上的运动锁定到主轴。这是在手机上滚动网页时的标准行为——向上和向下滚动页面仅垂直滚动页面而不是水平滚动(除非您的触摸 Action 不够“垂直”,其中如果 ScrollViewer 将 pan 页面而不是仅在一个方向上滚动)。
在移动设备的 Edge 中试用。放大网页,然后垂直滚动,并在不将手指从屏幕上移开的情况下继续滚动。看看即使您水平移动手指(都在同一个触摸 Action 中),您如何只能垂直滚动?这就是滚动导轨。
在上图中,中心点是 ScrollViewer 中触摸交互的起点。然后,您将手指(或笔,等等)朝特定方向移动。如果您在黄色区域内移动手指,则 ScrollViewer 将在水平 或 垂直方向上“锁定”滚动 Action 。如果您将手指移动到蓝色区域,则 ScrollViewer 会断定您没有尝试在水平或垂直方向上滚动,并且会在您继续移动手指时在两个方向上平移内容。我希望这是有道理的?
关于xaml - ScrollViewer IsHorizontalScrollChainingEnabled 和 IsHorizontalRailEnabled 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40338633/