Verschiedene Elementvorlage für jedes Element in einer WPF-Liste?
-
02-07-2019 - |
Frage
Ich habe viele Elemente in einer Liste Kontrolle. Ich möchte jedes Element ein anderes Element Vorlage haben, je nach Art des Artikels. So ist der erste Eintrag in der Liste ist ein ObjectA Typ und so will ich es mit ItemTemplateA gemacht werden. Zweites Element ist ein ObjectB Typ und so will ich es ItemTemplateB für das Rendering haben. Im Moment kann ich nur die ItemTemplate Einstellung verwenden Sie eine Vorlage zu definieren, für sie alle. Jede Art und Weise, dies zu erreichen?
Lösung
wird die ItemTemplateSelector
arbeiten, aber ich denke, dass es einfacher ist, mehrere DataTemplate
s in Ihrem Ressource-Abschnitt zu erstellen und dann einfach jeden ein DataType
geben. Dies wird automatisch dann diese DataTemplate
verwenden, wenn der Artikel Generator des passenden Datentyp erkennt?
<DataTemplate DataType={x:Type local:ObjectA}>
...
</DataTemplate>
Auch stellen Sie sicher, dass Sie keine x:Key
haben für den DataTemplate
gesetzt.
Lesen Sie mehr über diesen Ansatz hier
Andere Tipps
Haben Sie einen Blick auf die ItemTemplateSelector Eigentum Ihrer Liste Kontrolle. Sie können es auf einen benutzerdefinierten TemplateSelector zeigen und entscheiden, welche Vorlage in Code zu verwenden.
Hier ist ein Blog-Eintrag beschreibt TemplateSelectors:
http://blogs.interknowlogy.com/johnbowen/ Archiv / 2007/06/21 / 20463.aspx
Edit: Hier ist ein besserer Beitrag: