簡體   English   中英

C#WPF限制Listview中每行的項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM