Отображение коллекции элементов внутри элемента ItemsControl по горизонтали
Вот разметка XAML:
<ScrollViewer Grid.Column="1" Grid.Row="2" HorizontalScrollBarVisibility="Disabled" Width="990">
<StackPanel Margin="50 0 0 40">
<ItemsControl x:Name="streamList" ItemsSource="{Binding StreamInformations}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Margin="10" Orientation="Horizontal" >
<StackPanel Orientation="Horizontal">
<Image Source="{Binding ImageUrl}" Height="60" />
<StackPanel Margin="10 0 0 0" VerticalAlignment="Center">
<TextBlock Foreground="Black" Text="{Binding ChannelName}" FontSize="12" />
<TextBlock Foreground="#999" Text="{Binding PlayerName}" FontSize="10" />
<TextBlock Foreground="#999" Text="{Binding ViewCount}" FontSize="10" />
</StackPanel>
</StackPanel>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</ScrollViewer>
И вот как это выглядит:
![enter image description here]()
Я бы хотел, чтобы эти элементы отображались горизонтально и стекали вниз, когда они достигли края StackPanel.
Кажется, что каждый элемент в моей коллекции DataContext создает его собственный StackPanel, поэтому это не то, что я хочу.
Любые предложения?
Ответы
Ответ 1
Если вы измените шаблон ItemsPanel на WrapPanel или горизонтальную StackPanel, вы сможете добиться эффекта, который вы после...
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<!--other stuff here-->
</ItemsControl.ItemTemplate>
</ItemsControl>
В этом фрагменте ItemsPanel настроен на WrapPanel, ориентированный горизонтально. ItemTemplate будет включать в себя привязку и стиль, которые у вас уже есть...