UWP IsVerticalRailEnabled 不工作

UWP IsVerticalRailEnabled not working

我有一个 Scrollviewer 包装 ListView 电影海报,它可以垂直和水平滚动,也可以缩放。

当我将 IsHorizontalRailEnabled="False" 设置为 Scrollviewer 时,水平 rails 被有效禁用,但是无论我分配给 IsVerticalRailEnabled 的值如何,rails永远不会被禁用。

<ScrollViewer ZoomMode="Enabled"
              MinZoomFactor="0.1"
              MaxZoomFactor="1"
              VerticalScrollBarVisibility="Auto"
              HorizontalScrollBarVisibility="Auto"
              IsVerticalRailEnabled="False"
              IsHorizontalRailEnabled="False">
    <ListView   Grid.Row="0"
                            Name="MovieListView"
                            ItemTemplate="{StaticResource ItemTemplate}"
                            ItemsSource="{Binding movie_posters_list}">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <ItemsWrapGrid MaximumRowsOrColumns="15" Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
    </ListView>
</ScrollViewer>

我找不到任何关于这种奇怪行为的有用文档,知道如何纠正它吗?

编辑:正如 Justin XL 在评论中提到的那样,这种方式打破了 ListView 的 UI 虚拟化,因此应该避免。查看他的评论以获取更多信息

我自己找到了答案。我不完全明白为什么我必须这样做才能让它工作但没关系。如果您能解释为什么我必须复制 属性 用法,我将不胜感激:)

我所要做的就是将 ScrollViewer.IsVerticalRailEnabled="False" 添加到我的 ListView 元素中。

请注意,我的 ScrollViewer 中也必须保留 IsVerticalRailEnabled="False" 才能正常工作。

这是更新后的 xaml :

<ScrollViewer ZoomMode="Enabled"
              MinZoomFactor="0.1"
              MaxZoomFactor="1"
              VerticalScrollBarVisibility="Auto"
              HorizontalScrollBarVisibility="Auto"
              IsVerticalRailEnabled="False"
              IsHorizontalRailEnabled="False">
    <ListView   Name="MovieListView"
                ItemTemplate="{StaticResource ItemTemplate}"
                ItemsSource="{Binding movie_posters_list}"
                ScrollViewer.IsVerticalRailEnabled="False">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <ItemsWrapGrid MaximumRowsOrColumns="15" Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
    </ListView>
</ScrollViewer>