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 элемента в строке вместо всех элементов в одной строке.
Спасибо за внимание.
3 ответов:
Использовать
<UniformGrid Columns="3" .../>Вместо
<StackPanel Orientation="Horizontal" .../>вItemsPanelTemplate
Используйте
WrapPanelвместоStackPanel. Это не позволяет вам напрямую указать количество элементов в строке, но вы можете установить ширину каждого элемента, что почти так же хорошо. Когда в строке не остается места, она продолжается в следующей строке.EDIT: вы также можете использовать
UniformGrid, как предложил Бониал. Недостаток заключается в том, что если вы можете изменить размер пользовательского интерфейса и сделатьListViewшире, количество элементов в строке не изменится, и они будут растянуты, чтобы заполнить пространство. В зависимости от того, что вы хотите, это может быть нормально, но я думаю, чтоWrapPanelявляется лучшим вариантом в большинстве случаев.
Вы хотите заменить это представление списка.ItemsPanel StackPanel сWrapPanel . Он выполнит свою работу. После того, как панель WrapPanel имеет ширину, она будет обертывать элементы по линии.
Comments