WinPhone7编程ListBox多列

时间:2012-03-09 08:14:25

标签: c# windows-phone-7 xaml listbox

我有一个列表框,显示WinPhone 7编程中的视频标题和缩略图。 我将listbox链接到了ItemsSource。

listbox1.ItemsSource = videos;

在xaml中:

<Listbox.ItemTemplate>
  <DataTemplate>
    <StackPanel>
      <TextBlock Text="{Binding title}"/>
      <Image Source="{Binding thumbnail}"/>
    </StackPanel>
  </DataTemplate>
</Listbox.ItemTemplate>

现在我的列表框只有一列,每列都有标题文字和缩略图。 但我想要的是一个包含2列的列表框,每列在每行中都有标题文本和缩略图。

列表框

---------------------------
| title1     |  title2    |
| thumb1     |  thumb2    |
----------------------------
| title3     |  title4    |
| thumb3     |  thumb4    |
...

我花了很多时间试图找到解决方案,但我找不到它。 我希望堆栈溢出的人会为我解决这个问题。 欢迎任何想法。感谢

2 个答案:

答案 0 :(得分:4)

使用

       <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <toolkit:WrapPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
      </ListBox.ItemsPanel>
      <ListBox.ItemTemplate>
            <DataTemplate>
               <StackPanel Orientation = "Horizontal">
                 <TextBlock Text="{Binding title}"/>
                 <Image Source="{Binding Thumbnail}"/>
               <StackPanel/>
            </DataTemplate>
      </ListBox.ItemTemplate>

答案 1 :(得分:1)

除非我遗漏某些内容,否则我可以将StackPanel的方向设置为水平

<StackPanel Orientation="Horizontal"/>

这就是你要找的东西吗?如果没有请详细说明。

编辑:使用WrapPanel作为ItemsPanel。

此示例使用Silverlight for Windows Phone Toolkit中的WrapPanel。 您可能需要下载并安装它,或者包含命名空间定义以便工作!

另请注意,WrapPanel将包装尽可能多的项目。因此,如果您只需要一行中的两个项目,则可能需要调整ListBox的宽度。

<PhoneApplicationPage 
    ....
    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 
....
>

<!-- More Stuff -->

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
           <toolkit:WrapPanel/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
   <Listbox.ItemTemplate>
          <!-- your template -->
   </Listbox.ItemTemplate>
</ListBox>

<!-- More Stuff -->