Ich muss die ersten und letzten Elemente einer Listenansicht anders formatieren. Um das zu erreichen, habe ich angefangen, an einer Lösung zu arbeiten, die auf dieser Antwort basiert: Verwenden Sie eine andere Vorlage für das letzte Element in einem WPF-Elementsteuerelement
Grundsätzlich habe ich einen benutzerdefinierten ItemsTemplateSelector, der entscheidet, welche Vorlage basierend auf dem Index des Elements in den Elementen der Listenansicht (Code unten) angewendet werden soll.
Es funktioniert einwandfrei, nur wenn die Liste aktualisiert wird (ein Element wird hinzugefügt oder entfernt), werden die Vorlagen nicht erneut ausgewählt (z. B. wird zunächst SingleItemTemplate ausgewählt, da ein einzelnes Element vorhanden ist. Wenn ich ein Element zur Liste, die Vorlage des ersten Elements wird nicht auf FirstItemTemplate umgeschaltet). Wie erzwinge die Vorlagenauswahl für alle Artikel?
%Vor% Als alternativen Ansatz würde ich vorschlagen, die AlternationCount
Ihrer ItemsControl
an die Anzahl der Elemente in Ihrer Sammlung zu binden (z. B. die Count
-Eigenschaft). Dies wird dann jedem Container in Ihrem ItemsControl
eine eindeutige AlternationIndex
(0, 1, 2, ... Count-1) zuweisen. Sehen Sie hier für weitere Informationen:
Sobald jeder Container einen eindeutigen AlternationIndex
hat, können Sie einen DataTrigger
in Ihrem Container Style
verwenden, um den ItemTemplate
basierend auf dem Index festzulegen. Dies könnte unter Verwendung eines MultiBinding
mit einem Konverter erfolgen, der True
zurückgibt, wenn der Index gleich dem Zählwert ist, andernfalls False
. Natürlich könnten Sie auch einen Selektor für diesen Ansatz erstellen. Mit Ausnahme des Konverters ist dieser Ansatz gut, da es sich um eine reine XAML-Lösung handelt.
Ein Beispiel mit ListBox
:
Der Konverter könnte so aussehen:
%Vor%Tags und Links wpf listview datatemplate