Eindeutige Artikelvorlage für das erste und letzte Element in einem ListView

8

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%     
Vincent Mimoun-Prat 20.10.2011, 11:04
quelle

1 Antwort

14

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 :

%Vor%

Der Konverter könnte so aussehen:

%Vor%     
F Ruffell 20.10.2011, 11:28
quelle

Tags und Links