1

好的,我想做的很简单:

  • 我正在获取一个图像列表(使用绑定),我试图在类似表格的网格中显示(比如每行 3 个图像)
  • 如何才能做到这一点?

  <ListBox.ItemTemplate>
       <DataTemplate>

           <Image Height="100" Width="100" Margin="12,0,9,0" Source="{Binding AlbumArt}"/>

       </DataTemplate>
  </ListBox.ItemTemplate>

这样,图像是属性显示,但不是我想要的方式 - 它们显示在另一个下方,而不是像:

  • 美国广播公司
  • 国防军
  • 全球健康指数

如何才能做到这一点?有任何想法吗?

4

2 回答 2

1

一个很好的解决方案是使用UniformGrid它的 columns 属性和 ItemsControl。例子:

<ItemsControl ItemsSource="{Binding AlbumArt}">
 <ItemsControl.ItemsPanel>
   <ItemsPanelTemplate>
     <UniformGrid Columns="3"/>
   </ItemsPanelTemplate>
 </ItemsControl.ItemsPanel>
 <ItemsControl.ItemTemplate>
   <DataTemplate>
     <Image Height="100" Width="100" Margin="12,0,9,0" Source="{Binding}"/>
   </DataTemplate>
 </ItemsControl.ItemTemplate>
</ItemsControl>

这样你就会得到想要的结果。在此处阅读有关 UniformGrid 的更多信息:MSDN 您的解决方案不起作用的原因是列表框面板将项目放在另一个之下,而 UniformGrid 将它们从左到右放置,直到有可用空间或达到列限制然后下降行。

于 2013-07-10T09:30:05.787 回答
-1

您可以使用两个 StackPanel,一个具有垂直方向,一个具有水平方向。这是您编辑的代码以包含它们:

<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Verticle">
            <StackPanel Orientation="Horizontal">

                <Image Height="100" Width="100" Margin="12,0,9,0" Source="{Binding AlbumArt}"/>

            </StackPanel>
        </StackPanel>
    </DataTemplate>
</ListBox.ItemTemplate>
于 2013-07-10T14:12:44.897 回答