我的列表视图:
<ListView ItemTemplate="{StaticResource GridViewItemTemplate}" Name="gridView_movies">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Top"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
列表的数据模板:
<DataTemplate x:Key="GridViewItemTemplate">
<StackPanel Orientation="Vertical" >
<Image Width="250" Height="290" Source="{Binding Image}"/>
<TextBlock Text="{Binding Title}" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="20"/>
</StackPanel>
</DataTemplate>
当我加载它时,所有项目都显示在一行中,我的问题是,我如何每行只显示3个项目而不是一行中的所有项目。
感谢您的关注。
答案 0 :(得分:10)
使用
<UniformGrid Columns="3" .../>
而不是<StackPanel Orientation="Horizontal" .../>
ItemsPanelTemplate
答案 1 :(得分:1)
使用WrapPanel
代替StackPanel
。它不允许您直接指定每行的项目数,但您可以设置每个项目的宽度,这几乎一样好。如果一行上没有剩余空间,则会在下一行继续。
编辑:您也可以使用Bonial建议的UniformGrid
。缺点是,如果您可以调整UI的大小并使ListView
更宽,则每行的项目数不会改变,并且它们将被拉伸以填充空间。根据您的需要,它可能没问题,但我认为WrapPanel
在大多数情况下是更好的选择。
答案 2 :(得分:1)
您想要用WrapPanel替换ListView.ItemsPanel StackPanel。它将完成工作。一旦WrapPanel有一个宽度,它就会对这些项进行换行。