出于某种原因,在 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 集合 _SiteDisplay 包含另一个名为 _Collection 的可观察集合,它保存图像的 url。

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

最佳答案

您需要更改 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>

关于c# - 在 DataTemplate 中排列 ItemsControl 项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6412505/

10-13 02:23