【问题标题】:Data binding to a collection with different behavior for the last element数据绑定到对最后一个元素具有不同行为的集合
【发布时间】:2014-02-25 02:08:22
【问题描述】:

这似乎是一个常见问题,但我的 Google-Fu 让我一无所获。如果这个问题之前被问过一千次,我们深表歉意!

我有一个收藏,比如ObservableCollection<Athlete>。我想在屏幕上显示该集合,使其看起来像:

[球衣图片] | [球衣图片] | [球衣图片] | [球衣图片]

在这个人为的例子中,关键是每张图片之间的小条。减去那个栏,它只是绑定到集合的ListBox,水平StackPanelItemsPanelTemplate,然后是ItemTemplate,以显示每个项目的相应球衣图片。没问题!

接下来的问题是,除了集合中的最后一个元素之外,如何附加可能是任何图形元素的条形图?

谢谢!

【问题讨论】:

  • 这个answer 可能会给你一些想法。他们将Separator 添加到ControlTemplate 并使用DataTrigger 来控制Separator Visibility

标签: c# wpf data-binding datatemplate itemspaneltemplate


【解决方案1】:

正如@KornMuffin 的链接中所建议的,您可以将栏放在 ListBox 项目的左侧:

| [球衣图片] | [球衣图片] | [球衣图片] | [球衣图片]

然后使用DataTrigger{RelativeSource PreviousData} 绑定,如果之前的数据为空,则隐藏第一个栏。例如,假设我使用Separator 来显示栏,我可以将这种样式添加到分隔符控件中以隐藏第一个分隔符:

<Separator.Style>
    <Style TargetType="Separator">
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}">
                <Setter Property="Visibility" Value="Collapsed"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Separator.Style>

【讨论】:

  • 喜欢它,我不知道存在特定的相对绑定。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多