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>
我有一个 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>