我有一个 ItemsControl,它通过用逗号分隔项目来列出项目。代码如下:
<ItemsControl ItemsSource="{Binding MyItems}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text=", "
Name="commaTextBlock"/>
<TextBlock Text="{Binding}"/>
</StackPanel>
<!-- Hide the first comma -->
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding
RelativeSource={RelativeSource PreviousData}}"
Value="{x:Null}">
<Setter Property="Visibility"
TargetName="commaTextBlock"
Value="Collapsed"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
结果是这样的:Item1,Item2,Item3
现在,我想使用 WrapPanel 而不是 StackPanel 作为 ItemsPanelTemplate 来做同样的事情。我测试了它,它工作正常,除了一个小细节,它做了这样的事情:
项目 1、项目 2
, 项目 3
当然这是因为逗号在每个元素之前,我隐藏了第一个元素。我想把逗号放在每个元素之后并隐藏最后一个,所以结果是这样的:
项目 1,项目 2,
第 3 项
如果存在诸如 NextData 之类的东西,那将非常简单(所以我将绑定到 this 而不是 PreviousData),但不幸的是不存在这样的东西(或者我还没有找到)。有谁知道如何解决这个问题?
谢谢