C# 单行水平滚动/可旋转网格视图

C# 单行水平滚动/可旋转网格视图,c#,xaml,gridview,windows-runtime,uwp,C#,Xaml,Gridview,Windows Runtime,Uwp,我想要一个单行GridView,可以用鼠标和触摸屏水平滚动。GridView通过绑定显示图像,以便从图像数组中选择单个图像 一切正常(装订、图像选择等),但水平滚动不起作用。XAML代码如下所示 我错过了什么 <GridView x:Name="IconGridView" Grid.Row="0" Margin="8,12" DataContext="{x:Bind IconManagerObj}" DoubleTapped="{x:Bind IconGri

我想要一个单行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>


您的一切都正确,但ItemsRapGrid的方向必须是垂直的,才能使用水平滚动查看器

此处的文档说明:


当该值为垂直时,网格将从上到下在列中添加项,然后从左到右换行。项目列可以水平滚动或平移。

胡安·帕布罗·加西亚·科略的回答让我走上了正确的轨道,但如果没有额外的设置,则无法正常工作。通过试验,我发现关键的一点是为GridView设置高度

  • 高度必须设置为足以使单行元素显示,但不足以允许第二行。对于100的图像高度,我将其任意设置为140,效果非常好
  • ScrollViewer.VerticalScrollMode
    必须禁用
  • ScrollViewer.HorizontalScrollMode
    必须是Auto已启用
  • ScrollViewer.HorizontalScrollBarVisibility
    必须是Auto已启用
  • 最重要的是,正如Juan所指出的,
    项目rapGrid方向必须是垂直的(听起来有悖常理,但很有效!)

我已经将Juan的答案标记为已回答,因为它提供了一个完整的答案,因为如果没有将方向设置为垂直,我不可能很快找到一个完整的答案——如果你问我,这是一个相当违反直觉的设置,但现在我明白了。

Hmm实际上不应该设置高度。。。这是我的看法。如果你想,我可以添加它作为答案,因为我使用了堆栈面板而不是包装面板,它工作得很好!