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

标签 xaml uwp

谁能解释一下这两个属性的具体作用?

IsHorizontalScrollChainingEnabled
IsHorizontalRailEnabled

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

    Docs: True to enable horizontal scroll chaining from child to parent; otherwise, false.

  2. Horizo​​ntalScrollBarVisibility (Visible/Collapsed) 和 Horizo​​ntalScrollMode(Enabled/Disabled) 这两个属性对我来说很有意义,但在什么情况下我应该使用 IsHorizo​​ntalRailEnabled

    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 中),您如何只能垂直滚动?这就是滚动导轨。

Diagram

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

关于xaml - ScrollViewer IsHorizo​​ntalScrollChainingEnabled 和 IsHorizo​​ntalRailEnabled 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40338633/

相关文章:

c# - WPF 工具包图表控件绑定(bind)

xaml - VC++ Converter 不是命名空间的成员

xaml - 如何在 UWP 中对 TextBlock 的比例进行动画处理

c# - 在 UWP 应用中切换音频

c# - UWP 运行查询作为类型 - MVVM

c# - TrySetWallpaperImageAsync 在最新的 Insider 版本中不起作用?

c# - Windows 8 Metro 从代码隐藏调用标准样式

c# - 如何处理 ResourceDictionary 中定义的 ControlTemplate 中的 EventHandlers?

c# - 如果结果返回 null,则为 TextBlock 提供默认值

xaml - 是否可以在 XAML for Visual Studio 2012 中为用户控件创建通用基类