Supposons que vous avez un élément imbriqué de la structure, par exemple un ContextMenu avec MenuItems:
<ContextMenu Style="{StaticResource FooMenuStyle}">
<MenuItem Style="{StaticResource FooMenuItemStyle}"/>
...
</ContextMenu>
Vous pouvez facilement appliquer des styles ou des modèles à la ContextMenu ou MenuItem éléments. Mais si le MenuItem style appartient au style de Menu, il est assez lourd et redondant d'ajouter à chaque MenuItem élément.
Est-il possible de les appliquer automatiquement à l'enfant-éléments? De sorte que vous pouvez simplement écrire ceci:
<ContextMenu Style="{StaticResource FooMenuStyle}">
<MenuItem/>
...
</ContextMenu>
Il serait bien si FooMenuStyle pourrait de style contenant MenuItem éléments, mais cela ne semble pas être possible.
Edit: L'exemple de Menu est probablement trompeuse, car j'étais pas au courant de ItemContainerStyle et l'intention était pour une solution générale. Sur la base des deux réponses j'ai deux solutions: l'une générale variante et un pour ItemContainerStyle et la comme:
<Style x:Key="FooMenuItem" TargetType="{x:Type MenuItem}">
...
</Style>
<Style x:Key="FooMenu" TargetType="{x:Type ContextMenu}">
<!-- Variant for specific style attribute -->
<Setter Property="ItemContainerStyle"
Value="{StaticResource FooMenuItem}"/>
<!-- General variant -->
<Style.Resources>
<Style TargetType="{x:Type MenuItem}"
BasedOn="{StaticResource FooMenuItem}"/>
</Style.Resources>
</Style>
<ContextMenu Style="{StaticResource FooMenu}">
<MenuItem/>
</ContextMenu>