Wie verwendet man eine DataType-bezogene DataTemplate zusammen mit GridView?

Bevor Sie antworten: Diese Frage bezieht sich auf WPFsListView Kontrolle (mitGridView). Es istnicht über WPF'sDataGrid Kontrolle, ASP.NETDataGrid oderListView Steuerelemente oder WinFormsDataGridView oderListView Kontrollen. Sie klingen alle sehr ähnlich und sind oft verwirrt, aber eine Antwort auf die falsche Art der Kontrolle ist für mich nicht hilfreich und vor allem eine Verschwendung der Zeit, die Sie zum Schreiben der Antwort benötigt haben, die meines Erachtens nicht verschwendet werden sollte.

Ich habe einListView steuern mitGridView Das hat mehrere Spalten, die an die Eigenschaften meines Ansichtsmodells gebunden sind. Ich kann das visuelle Erscheinungsbild des leicht anpassenGridViewColumnZellen durch Angabe einesCellTemplate (entweder inline oder über eine Ressource).

Jetzt habe ich eine bestimmte Eigenschaft in meinem Ansichtsmodell; sein Typ ist eine abstrakte Basisklasse und sein Wert kann einer von mehreren abgeleiteten Typen sein. Jeder abgeleitete Typ sollte einen anderen habenDataTemplate in der Zelle. Glücklicherweise,GridViewColumn hat einCellTemplateSelector Das macht genau das, was ich will, aber es muss etwas Installationscode geschrieben werden. Aber auf der Seite nachDataTemplateSelector es sagt:

Beachten Sie, dass Sie bei Objekten unterschiedlichen Typs die DataType-Eigenschaft in der DataTemplate festlegen können. In diesem Fall muss kein DataTemplateSelector erstellt werden. [...] Weitere Informationen finden Sie unterÜbersicht über Datenvorlagen.

Hurra! Sie müssen keinen Installationscode schreiben. Meine Typensind anders, so scheint dies wie eine perfekte Passform. Aber leider, auch nachdem ich aDataTemplate mit einerDataType das einem bestimmten abgeleiteten Typ einer der datengebundenen Spalten entspricht (gebunden mitGridViewColumn'sDisplayMemberBinding) hatte es keine Wirkung.

Ich möchte einfach eine andere anzeigenDataTemplate nach dem Laufzeit-Typ einer bestimmten Spalte in meinerGridView. SindDataType-gezieltDataTemplates einfach unvereinbar mitGridView? Gibt es eine Möglichkeit, sie zu verwenden, oder muss ich auf die Angabe von a zurückgreifen?CellTemplateSelector? Vielleicht gibt es eine Möglichkeit, mehrere anzugebenDataTemplates drinnenGridViewColumn'sCellTemplate, so, dass dieDataType Eigentum wird eine Wirkung haben?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage