Расположение элементов ItemsControl в DataTemplate - PullRequest
2 голосов
/ 20 июня 2011

По какой-то причине элементы, добавленные с помощью 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"/>

Моя обозримая коллекция _SiteDisplay содержит еще одну наблюдаемую коллекцию под названием _Collection, которая содержит URL-адрес изображения.

Это вырезано из реального кода, но иллюстрирует проблему.Я не могу заставить изображения выравниваться по горизонтали!Любая помощь очень ценится - или предложения для лучших способов сделать это.

1 Ответ

11 голосов
/ 20 июня 2011

Вам нужно изменить панель, используемую 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>
...