У меня есть 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. Я проверил это, и он отлично работает, за исключением небольшой детали, он делает что-то вроде этого:
Item1, Item2
, Item3
Конечно, это потому, что запятая стоит перед каждым элементом, а я скрываю первый. Я хотел бы поставить запятую после каждого элемента и скрыть последний, поэтому результат будет следующим:
Item1, Item2,
Item3
Было бы очень просто, если бы существовало что-то вроде NextData (так что я бы привязался к этому, а не к PreviousData), но, к сожалению, такого не существует (или я его не нашел). У кого-нибудь есть идеи, как решить эту проблему?
Спасибо