C # WPF Ограничение элементов на строку в представлении списка - PullRequest
4 голосов
/ 24 декабря 2010

My 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 предмета в ряду вместо всех предметов в одном ряду.

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

Ответы [ 3 ]

10 голосов
/ 24 декабря 2010

Используйте

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

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

1 голос
/ 24 декабря 2010

Вы хотите заменить эту StackPanel ListView.ItemsPanel на WrapPanel .Это сделает работу.Как только WrapPanel будет иметь ширину, он будет оборачивать элементы по линии.

1 голос
/ 24 декабря 2010

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

РЕДАКТИРОВАТЬ: вы также можете использовать UniformGrid, как предложено Bonial.Недостатком является то, что если вы можете изменить размер своего пользовательского интерфейса и увеличить ListView, количество элементов в строке не изменится, и они будут растянуты, чтобы заполнить пространство.В зависимости от того, что вы хотите, это может быть хорошо, но я думаю, что WrapPanel является лучшим вариантом в большинстве случаев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...