2009-09-17 11 views
2

J'ajoute mes données hiérarchiques à un menu-contrôle en utilisant le HierarchicalDataTemplate.Ajout d'un style à HierarchicalDataTemplate généré MenuItems

<HierarchicalDataTemplate DataType="{x:Type local:MyType}" ItemsSource="{Binding Path=SubItems}"> 
    <StackPanel> 
     <TextBlock Text="{Binding Name}"/> 
    </StackPanel> 
</HierarchicalDataTemplate> 

Mon menu est créé comme celui-ci

<Menu> 
    <MenuItem ItemsSource="{Binding MyCollection}" Header="MainItem"></MenuItem> 
</Menu> 

Comment un ajouter un style à ces MenuItems générés pour définir la propriété IsCheckable par exemple. Il est important que le MenuItem principal (en-tête nommé "MainItem" ici) n'applique pas ce style donc il n'est pas vérifiable.

J'ai essayé plusieurs approches en utilisant <Style> et <DataTemplate mais sans succès.

Répondre

5

Comme ceci:

<Menu> 
    <Menu.ItemContainerStyle> 
     <Style TargetType="MenuItem"> 
      .... 
     </Style> 
    </Menu.ItemContainerStyle> 
</Menu> 

Ou en vous cas:

<Menu> 
    <MenuItem Header="Text" ItemsSource="{Binding Data}" ItemContainerStyle="{SomeStyle}"/> 
</Menu> 
+0

Il applique à tous MenuItems et non seulement aux sous-éléments. Je voudrais définir un style à MenuItems 'créé' par le HierarchicalDataTemplate et non à tous les éléments du menu. – apparat

+0

Réponse mise à jour. HTH. – gimalay

+0

Il fonctionne avec un StaticResource à mon style dans le ItemContainerStyle comme vous l'avez dit. Merci – apparat