在DataTemplate中排列ItemsControl项

时间:2011-06-20 14:07:45

标签: c# silverlight datatemplate itemscontrol stackpanel

出于某种原因,在dataTemplate中添加的项目将不会执行我告诉他们的操作!!

我试图在堆叠面板中水平放置一些图像,但不管我怎么做,它们只是垂直移动。

这是我的xaml。

<DataTemplate x:Name="View">
  <Border BorderBrush="Red" BorderThickness="4" >
      <StackPanel  Orientation="Horizontal">
             <ItemsControl ItemsSource="{Binding Path=_Collection, Mode=OneWay}" >
                 <ItemsControl.ItemTemplate>
                      <DataTemplate >
                          <Image Source="{Binding _Source}" />
                      </DataTemplate>
                 </ItemsControl.ItemTemplate>
             </ItemsControl>
         <TextBlock Height="30" FontFamily="Trebuchet MS" FontSize="18" Text="{Binding _Name}" />
      </StackPanel>
  </Border>
</DataTemplate>

一切都很好。这是从用户控件中调用的

<ItemsControl ItemTemplate="{StaticResource siteView}" ItemsSource="{Binding Path=_SiteDisplay"/>

我的obervable colletion _SiteDisplay包含另一个名为_Collection的oberservable集合,它保存图像的URL。

这是从实际代码中删除的,但说明了问题。我不能让图像水平对齐!非常感谢任何帮助 - 或建议更好的方法。

1 个答案:

答案 0 :(得分:11)

您需要更改ItemsControl使用的面板,而不是包含ItemsControl的面板:

<ItemsControl ItemsSource="{Binding Path=_Collection, Mode=OneWay}" >
    <ItemsControl.ItemTemplate>
        <DataTemplate >
            <Image Source="{Binding _Source}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate >
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>