[英]C# WPF Limit items per row in a Listview
我的清單視圖:
<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個項目而不是一行中的所有項目。
感謝您的關注。
采用
<UniformGrid Columns="3" .../>
代替<StackPanel Orientation="Horizontal" .../>
在ItemsPanelTemplate
使用WrapPanel
而不是StackPanel
。 它不允許您直接指定每行的項目數,但您可以設置每個項目的寬度,這幾乎一樣好。 如果一行中沒有剩余空間,則會在下一行繼續。
編輯:您也可以使用UniformGrid
建議的UniformGrid。 缺點是,如果您可以調整UI的大小並使ListView
更寬,則每行的項目數不會改變,並且它們將被拉伸以填充空間。 根據你的需要,它可能沒問題,但我認為在大多數情況下, WrapPanel
是更好的選擇。
您想要用WrapPanel替換ListView.ItemsPanel StackPanel。 它將完成工作。 一旦WrapPanel有一個寬度,它就會換行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.