我正在用c#开发一个WinRT应用程序,我使用GridView来展示我的项目。
我希望我的项目水平排列然后(当达到最大宽度时)下一项应该添加到新行(简单: 只能看到垂直滚动条)。
不幸的是,我当前的xaml只能在一行中添加水平项目(带有水平滚动条)
<GridView x:Name="GridChildItem"
ItemContainerStyle="{StaticResource NonTickGridViewItem}"
VerticalContentAlignment="Stretch"
ItemTemplate="{StaticResource CustomChildItemTemplete}"
SelectionMode="Single"
IsItemClickEnabled="True"
ItemClick="gridViewChild_ItemClick_1"
Margin="0,40,0,0"
Height="Auto"
Background="{StaticResource DropDownMenuBackColor}"
ScrollViewer.IsHorizontalScrollChainingEnabled="False"
ScrollViewer.IsVerticalScrollChainingEnabled ="True"
VerticalAlignment="Top">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Margin="20,0,0,0" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
答案 0 :(得分:17)
如果您不想允许水平滚动,则需要使用ListView
代替GridView
,
使用 ListView 显示滚动的数据集合 垂直。要显示水平滚动的集合,请使用 的 GridView的强>
但是如果你想保持包装行为,你需要使用WrapGrid作为ItemsPanel
:
<ListView>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
答案 1 :(得分:10)
GridView的默认ItemsPanelTemplate包含一个Orientation =“Vertical”的WrapGrid:它垂直堆叠并水平滚动。
如果将“方向”更改为“水平”,它将水平堆叠,但由于某种原因不会滚动。你可以通过在GridView上设置ScrollViewer.VerticalScrollMode =“Enabled” 来解决这个问题(不在WrapGrid上!)。
示例:
<GridView ScrollViewer.VerticalScrollMode="Enabled">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid Orientation="Horizontal" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>