2010-11-11 3 views
0

Je travaille actuellement sur le style d'un TabControl, et avoir une idée peut-être bizarre:WPF: Est-il possible d'utiliser un modèle de données et un modèle de contrôle?

si je voudrais avoir un ControlTemplate par défaut pour tous mes onglets dans ma demande, mais spécifier un autre DataTemplate pour chaque TabControl (en fonction des données que je veux montrer)?

Que pensez-vous de cela? Savez-vous s'il y a une solution pour cela?

Peut-être que je prends le mauvais sens ...

Merci pour vos pensées :-)

Répondre

0

J'ai trouvé un moyen! En fait, la propriété ItemContainerStyle de TabControl fournir trois modèles:

  1. HeaderTemplate, qui est un modèle de données pour l'en-tête de chaque élément
  2. ContentTemplate, qui est un modèle de données pour le contenu de chaque élément
  3. Modèle, qui peut être un modèle de contrôle, et qui est celui que j'utilise!

Voilà comment je le fais (le style):

<Style x:Key="MyTabItemStyle" TargetType="{x:Type TabItem}"> 
    <Setter Property="Template" 
      Value="{StaticResource ControlTemplate}"/> 
    <Setter Property="Header" Value="{Binding}"/> 
    <Setter Property="HeaderTemplate" 
      Value="{StaticResource HeaderTemplate}"/> 
    <Setter Property="Content" Value="{Binding}"/> 
    <Setter Property="ContentTemplate" 
      Value="{StaticResource ContentTemplate}"/> 
</Style> 

Et pour le relier au TabControl:

<TabControl ItemsSource="{Binding Elements}" 
      SelectedIndex="{Binding SelectedIndex}" 
      ItemContainerStyle="{DynamicResource MyTabItemStyle}"> 

Que pensez-vous de cela?

1

Vous ne pouvez pas spécifier un DataTemplate pour un TabControl vous spécifiez un DataTemplate pour les données affichées dans tous les TabItems de votre TabControl.

+0

Salut Bitbonk, j'utilise en fait la propriété ItemContainerStyle du TabControl pour définir le "HeaderTemplate" et le "ContentTemplate" (tous deux sont DataTemplate) (voir: http://stackoverflow.com/questions/1965355/how-to- add-new-user-control-in-tabcontrol-contenttemplate, première réponse), et j'aimerais leur ajouter un ControlTemplate. –

Questions connexes