Привязка данных к коллекции с другим поведением для последнего элемента

StackOverflow https://stackoverflow.com//questions/22003228

Вопрос

Кажется, что это была бы распространенная проблема, но мой поиск в Google-Fu оставил меня безрезультатным.Приношу извинения, если об этом уже спрашивали тысячу раз!

У меня есть коллекция, скажем, ObservableCollection<Athlete>.Я хочу отобразить эту коллекцию на экране так, чтобы она выглядела примерно так:

[Фото Джерси] | [Фото Джерси] | [Фото Джерси] | [Фото Джерси]

Ключевым моментом в этом надуманном примере является маленькая полоска между каждой картинкой.Вычтите эту планку, и это будет просто ListBox привязанный к коллекции, с ItemsPanelTemplate из горизонтального StackPanel, а затем ItemTemplate чтобы показать соответствующее изображение трикотажа для каждого элемента.Никаких проблем!

Тогда вопрос в том, как добавить панель, которая может быть любым графическим элементом, в конце концов, кроме последнего элемента в коллекции?

Спасибо!

Это было полезно?

Решение

Как предложено в ссылке от @KornMuffin, вы можете поместить панель в левой части элемента ListBox :

| [Фото Джерси] | [Фото Джерси] | [Фото Джерси] | [Фото Джерси] / [Фото Джерси]

Затем используйте DataTrigger с {RelativeSource PreviousData} привязка, чтобы скрыть первую строку, если предыдущие данные равны нулю.Например, предположим, что я использую Separator чтобы отобразить панель, я могу добавить этот стиль к элементу управления 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top