2010-05-30 3 views
4

Dans mon application, j'ai un contrôle onglet qui a plusieurs éléments de l'onglet. Le problème est que je souhaite appliquer un style à ces éléments d'onglet, mais à aucun autre élément d'onglet (imbriqué).WPF: Définir le style sur les enfants immédiats seulement

J'ai essayé de placer le style suivant sur le contrôle onglet, mais aussi des effets de tous les enfants:

<Style x:Key="tabControlStyle" TargetType="{x:Type TabControl}"> 
    <Setter Property="TabItem.Template" Value="{StaticResource tabItemTemplate}" /> 
</Style> 

En utilisant le code ci-dessus, je reçois l'erreur suivante: ControlTemplate TargetType « TabItem » ne correspond pas basé sur un modèle tapez TabControl, car TabItem et TabControl ont le même "Template" DependencyProperty, et le code tente de définir TabItemTemplate en tant que TabControl-Template.

Quelqu'un peut-il m'aider?

Répondre

3

Utilisez la propriété ItemContainerStyle pour appliquer un style aux éléments d'un des éléments de contrôle:

<Style x:Key="tabControlStyle" TargetType="{x:Type TabControl}"> 
    <Setter Property="ItemContainerStyle" Value="{x:StaticResource tabItemStyle}" /> 
</Style> 
+1

Cela pourrait fonctionner dans ce cas, mais je usages similaires où le parent est pas un ItemControl. Que puis-je faire dans ces cas? – ollifant

+0

Lorsque ce n'est pas un ItemsControl qui signifie que les enfants ont été créés par vous, pas par le framework, vous avez donc le contrôle total du modèle et du style à appliquer. –

+2

Oui, mais que faire si je ne veux pas définir le même style sur 20 contrôles? – ollifant

Questions connexes