2015-12-27 162 views
3

我想要一个单行GridView,可以用鼠标和触摸滑动水平滚动。 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> 

回答

4

Juan Pablo Garcia Coello的回答让我走上了正轨,但没有额外的设置就无法正常工作。我通过试用发现的重要事情是为GridView设置高度

  • 身高必须足够设置单个行元素的显示没有高到足以允许第二行。对于100的图像高度,我将此任意设置为140,并且效果很好。
  • ScrollViewer.VerticalScrollMode必须残疾人
  • ScrollViewer.HorizontalScrollMode必须自动启用
  • ScrollViewer.HorizontalScrollBarVisibility必须自动启用
  • 最关键的,胡安指出,ItemsWrapGrid Orientation必须是垂直(sou NDS违反直觉的,但作品!)

我已标记胡安作为回答,因为它提供与这一个完整的答案,因为这样的事实,我不能很快想出了一个完整的答案,而不方向设定垂直 - 如果你问我,但现在我明白了,这是一个相当反直觉的设置。

+0

嗯,高度不应该被设置实际...这是我的承担。 http://depblog.weblogs.us/2015/03/25/show-items-scrolling-horizo​​ntally-with-listview-in-winrt/如果你想我可以添加它作为答案,因为我使用堆栈面板包装面板,它工作正常! – Depechie