2012-01-07 71 views
10

這裏面是XAML標記:顯示項目的集合ItemsControl的水平

 <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,所以這不是我想要的。

有什麼建議嗎?

+4

如果此問題的唯一答案適用於您,然後接受它。如果沒有,請提供反饋意見,說明爲什麼它不適合您的問題。答案已經爲其他一些人起作用了,包括我自己。 – Xtr 2013-07-18 08:45:22

回答

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將包含您已具有的裝訂和樣式...