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 wizualnyGridViewColumnkomó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życiuGridViewColumnjestDisplayMemberBinding), 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 wieluDataTemplates w środkuGridViewColumnjestCellTemplate, tak żeDataType nieruchomość będzie działać?

questionAnswers(2)

yourAnswerToTheQuestion