我有一个ItemsControl,它通过逗号分隔列出项目。代码如下:
结果类似于这样: 项目1,项目2,项目3。
现在,我想使用WrapPanel而不是StackPanel作为ItemsPanelTemplate来完成相同的操作。我测试过了,它运行得很好,除了一个小细节,它会做出下面的效果:
项目1, 项目2,
项目3
当然,这是因为逗号在每个元素之前,并且我隐藏了第一个元素。我想将逗号放在每个元素之后,并隐藏最后一个元素,使结果如下所示:
项目1,项目2,
项目3
如果存在类似于NextData的东西(那么我可以绑定到它而不是PreviousData),那么这将非常简单,但不幸的是并没有这样的东西(或者我还没有找到)。有人有解决这个问题的想法吗?
谢谢。
<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>
结果类似于这样: 项目1,项目2,项目3。
现在,我想使用WrapPanel而不是StackPanel作为ItemsPanelTemplate来完成相同的操作。我测试过了,它运行得很好,除了一个小细节,它会做出下面的效果:
项目1, 项目2,
项目3
当然,这是因为逗号在每个元素之前,并且我隐藏了第一个元素。我想将逗号放在每个元素之后,并隐藏最后一个元素,使结果如下所示:
项目1,项目2,
项目3
如果存在类似于NextData的东西(那么我可以绑定到它而不是PreviousData),那么这将非常简单,但不幸的是并没有这样的东西(或者我还没有找到)。有人有解决这个问题的想法吗?
谢谢。