C# WPF ограничивает количество элементов на строку в представлении списка



Мой Listview:



<ListView ItemTemplate="{StaticResource GridViewItemTemplate}" Name="gridView_movies">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Top"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>


Datatemplate списка:



<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 элемента в строке вместо всех элементов в одной строке.



Спасибо за внимание.

605   3  

3 ответов:

Использовать

<UniformGrid Columns="3" .../>

Вместо <StackPanel Orientation="Horizontal" .../> в ItemsPanelTemplate

Используйте WrapPanel вместо StackPanel. Это не позволяет вам напрямую указать количество элементов в строке, но вы можете установить ширину каждого элемента, что почти так же хорошо. Когда в строке не остается места, она продолжается в следующей строке.

EDIT: вы также можете использовать UniformGrid, как предложил Бониал. Недостаток заключается в том, что если вы можете изменить размер пользовательского интерфейса и сделать ListView шире, количество элементов в строке не изменится, и они будут растянуты, чтобы заполнить пространство. В зависимости от того, что вы хотите, это может быть нормально, но я думаю, что WrapPanel является лучшим вариантом в большинстве случаев.

Вы хотите заменить это представление списка.ItemsPanel StackPanel сWrapPanel . Он выполнит свою работу. После того, как панель WrapPanel имеет ширину, она будет обертывать элементы по линии.

Comments

    Ничего не найдено.