J'affiche dans une ListView des objets de type Contact et Organisation. Tous deux dérivent d'un type de base Entry.

J'affiche des colonnes qui sont communes à Contact et Organisation, donc tout va bien de ce côté là.
Par contre, j'affiche tout de même 1 colonne dont le résultat est "calculé". En clair, il s'agit d'une colonne "Nom".

Quand j'ai une organisation, j'affiche Organisation.Name
et quand j'ai un contact, j'affiche Contact.Title + Contact.FirstName + Contact.LastName.

Ca marche bien avec un contentpresenter avec des datatemplates en ressources pour la colonne en question :
Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<GridViewColumn Header="Nom">
	<GridViewColumn.CellTemplate>
		<DataTemplate>
			<ContentControl Content="{Binding Object}">
				<ContentControl.Resources>
					<DataTemplate DataType="{x:Type logic:Contact}">
						<TextBlock>
							<TextBlock Text="{Binding Title}" />
							<TextBlock Text="{Binding FirstName}" />
							<TextBlock Text="{Binding LastName}" />
						</TextBlock>
					</DataTemplate>
					<DataTemplate DataType="{x:Type logic:Organisation}">
						<TextBlock Text="{Binding Name}" />
					</DataTemplate>
				</ContentControl.Resources>
			</ContentControl>
		</DataTemplate>
	</GridViewColumn.CellTemplate>
</GridViewColumn>

Par contre, comment faire un tri sur cette colonne quand je click sur l'en-tête de colonne ?... La méthode des SortDescription me parait un peu compromise.