Jak korzystać z DataTemplate ukierunkowanego na DataType razem z GridView?
Zanim odpowiesz: To pytanie dotyczy WPFListView
kontrola (zGridView
). To jestnie o WPFDataGrid
kontrola, ASP.NETDataGrid
lubListView
kontrolki lub WinFormDataGridView
lubListView
sterownica. Wszystkie brzmią bardzo podobnie i często są zdezorientowane, ale odpowiedź na niewłaściwy rodzaj kontroli jest dla mnie zarówno nieprzydatna, jak i, co ważniejsze, marnuje czas na napisanie odpowiedzi, co moim zdaniem nie powinno być zmarnowane.
mamListView
kontroluj za pomocąGridView
który ma kilka kolumn związanych z właściwościami mojego modelu widoku. Mogę łatwo dostosować wygląd wizualnyGridViewColumn
komórki przez podanie aCellTemplate
(Inline lub przez zasób).
Teraz mam określoną właściwość w moim modelu widoku; jego typ jest abstrakcyjną klasą bazową, a jego wartość może być jednym z kilku typów pochodnych. Każdy typ pochodny powinien mieć innyDataTemplate
w celi. Szczęśliwie,GridViewColumn
maCellTemplateSelector
co robi dokładnie to, czego chcę, ale wymaga napisania kodu instalacyjnego. Ale patrząc na stronęDataTemplateSelector
to mówi:
Zauważ, że jeśli masz obiekty różnych typów, możesz ustawić właściwość DataType na DataTemplate. Jeśli to zrobisz, nie ma potrzeby tworzenia DataTemplateSelector. [...] Aby uzyskać więcej informacji, zobaczOmówienie templowania danych.
Hurra! Nie ma potrzeby pisania kodu instalacyjnego. Moje typysą inaczej więc wydaje się, że pasuje idealnie. Ale niestety, nawet po zdefiniowaniuDataTemplate
zDataType
który odpowiada konkretnemu typowi pochodnemu jednej z kolumn danych (powiązane przy użyciuGridViewColumn
jestDisplayMemberBinding
), nie miało to żadnego skutku.
Po prostu chcę wyświetlić innyDataTemplate
zgodnie z rodzajem czasu wykonywania określonej kolumny w moimGridView
. SąDataType
-celowaneDataTemplates
po prostu niekompatybilny zGridView
? Czy istnieje sposób na ich użycie, czy też muszę uciec się do określenia aCellTemplateSelector
? Być może istnieje sposób na określenie wieluDataTemplate
s w środkuGridViewColumn
jestCellTemplate
, tak żeDataType
nieruchomość będzie działać?