在数据模板内排列 ItemsControl 项

发布于 2024-11-16 09:59:08 字数 1114 浏览 3 评论 0原文

由于某种原因,在数据模板中添加的项目不会执行我告诉他们的操作!

我试图将许多图像水平放置在堆栈面板中,但无论我如何尝试,它们都只能垂直放置。

这是我的 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。

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

For some reason, Items added witin a dataTemplate will not do what I tell them to do!!

I am trying to put a number of images horizontally within a stackpanel, but no matter how I try, they only go vertically.

Here is my 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>

Everything is bound ok. This is called from within the user control proper

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

My obervable colletion _SiteDisplay contains another oberservable collection called _Collection which holds the url of the image.

This is cut down from the real code, but illustrates the problem. I can not get the images to align horizontally! Any help very much appreciated - or suggestions for better ways of doing this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

逆光下的微笑 2024-11-23 09:59:08

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

You need to change the panel used by the ItemsControl, not the panel that contains the 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文