水平展示 ItemsControl 中的项目集合

11

以下是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>

这是它的外观:

在此输入图片描述

我希望这些项横向显示,并在达到 StackPanel 的边缘时向下流动。

目前似乎我的 DataContext 集合中的每个项都创建了自己的 StackPanel,所以这不是我想要的。

有什么建议吗?


5
如果这个问题的唯一答案对你有用,那就接受它。如果不行,那就提供反馈说明为什么它不能解决你的问题。这个答案已经对很多其他人起作用了,包括我自己。 - Xtr
1个回答

16

如果你将ItemsPanel模板更改为WrapPanel或水平的StackPanel,就可以实现你想要的效果...

<ItemsControl>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <!--other stuff here--> 
    </ItemsControl.ItemTemplate>
</ItemsControl>
在这段代码中,ItemsPanel 被设置为水平方向的 WrapPanel。ItemTemplate 将包括您已经拥有的绑定和样式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接