我想要一个可以通过鼠标和触摸滑动水平滚动的单行GridView。 GridView将通过绑定显示图像,以便从图像阵列中选择单个图像。
除了水平滚动不起作用外,一切正常(装订,图像选择等)。 XAML代码如下所示。
我错过了什么?
<GridView x:Name="IconGridView"
Grid.Row="0"
Margin="8,12"
DataContext="{x:Bind IconManagerObj}"
DoubleTapped="{x:Bind IconGridView_DoubleTapped}"
IsItemClickEnabled="True"
IsSwipeEnabled="True"
ItemsSource="{Binding Path=IconImageInfo}"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollMode="Enabled"
ScrollViewer.VerticalScrollMode="Disabled"
SelectionMode="Single"
Tapped="{x:Bind IconGridView_Tapped}">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Horizontal" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel Margin="4,8"
HorizontalAlignment="Center"
BorderBrush="{ThemeResource SubtleBlueBrush}"
BorderThickness="1">
<Image Width="150" Source="{Binding IconImage}Stretch="Uniform"/>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
答案 0 :(得分:7)
你有一切正确,但ItemsWrapGrid的方向必须是垂直才能拥有水平ScrollViewer。
此处的文档https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.itemswrapgrid.aspx解释了:
当值为Vertical时,网格会从上到下按列添加项目,然后从左到右换行。项目列水平滚动或平移。
答案 1 :(得分:4)
Juan Pablo Garcia Coello 的回答让我走上了正确的轨道,但没有额外的设置就没有工作。我通过试验发现的关键是为GridView设置高度。
ScrollViewer.VerticalScrollMode
必须已停用 ScrollViewer.HorizontalScrollMode
必须自动或已启用 ScrollViewer.HorizontalScrollBarVisibility
必须自动或已启用 ItemsWrapGrid Orientation
必须垂直(听起来违反直觉但有效!)我已经将胡安的标记作为答案,因为它提供了一个完整的答案,因为我没有快速找到一个完整的答案而没有将Orientation设置为Vertical - a如果你问我但是现在我明白了,那就是反直觉的设置。