WPF TabControl et DataTemplates

J'ai un ensemble de ViewModels que je suis de liaison à la propriété ItemsSource d'un TabControl. Appelons ces Viewmodel AViewModel, BViewModel, et CViewModel. Chacun de ces besoins afin d'avoir un autre ItemTemplate (pour l'en-tête; car ils ont besoin de montrer une icône différente) et une autre ContentTemplate (parce qu'ils ont très différents des modèles d'interaction).

Ce que j'aimerais c'est quelque chose comme ceci:

Défini dans la Ressource.les fichiers xaml quelque part:

<DataTemplate x:Key="ItemTemplate" DataType="{x:Type AViewModel}">
    ...
</DataTemplate>

<DataTemplate x:Key="ItemTemplate" DataType="{x:Type BViewModel}">
    ...
</DataTemplate>

<DataTemplate x:Key="ItemTemplate" DataType="{x:Type CViewModel}">
    ...
</DataTemplate>

<DataTemplate x:Key="ContentTemplate" DataType="{x:Type AViewModel}">
    ...
</DataTemplate>

<DataTemplate x:Key="ContentTemplate" DataType="{x:Type BViewModel}">
    ...
</DataTemplate>

<DataTemplate x:Key="ContentTemplate" DataType="{x:Type CViewModel}">
    ...
</DataTemplate>

Définie séparément:

<TabControl ItemTemplate="[ Some way to select "ItemTemplate" based on the type ]"
            ContentTemplate="[ Some way to select "ContentTemplate" based on the type ]"/>

Maintenant, je sais que, de façon réaliste, à chaque fois que j'définir un DataTemplate avec la même clé, le système va se plaindre. Mais, il ya quelque chose que je peux faire c'est similaire à ce qui me permettra de mettre un DataTemplate dans un TabControl basé sur un nom et un Type de données?

OriginalL'auteur dustyburwell | 2009-08-28