Angenommen, Sie eine verschachtelte Elementstruktur aufweisen, beispielsweise ein ContextMenu mit MenuItems:Styling verschachtelte Elemente in WPF
<ContextMenu Style="{StaticResource FooMenuStyle}">
<MenuItem Style="{StaticResource FooMenuItemStyle}"/>
...
</ContextMenu>
Schnell Arten oder Vorlagen auf die ContextMenu oder MenuItem Elemente anwenden können. Aber wenn der MenuItem-Stil zum Menü-Stil gehört, ist es ziemlich umständlich und überflüssig, ihn jedem MenuItem-Element hinzuzufügen.
Gibt es eine Möglichkeit, diese automatisch auf untergeordnete Elemente anzuwenden? Damit Sie einfach diesen schreiben können:
<ContextMenu Style="{StaticResource FooMenuStyle}">
<MenuItem/>
...
</ContextMenu>
würde es ordentlich sein, wenn FooMenuStyle MenuItem Elemente enthalten Stil könnte, aber das scheint nicht möglich zu sein.
Bearbeiten: Das Menü Beispiel ist wahrscheinlich irreführend, da ich ItemContainerStyle nicht kannte und die Absicht war für eine allgemeine Lösung. eine allgemeine Variante und eine für ItemContainerStyle und dergleichen: Basierend auf den zwei Antworten, die ich habe mit beiden Lösungen kommen
<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>
Ich glaube, er bereits einen Stil in seinen Ressourcen hat und möchte gelten es zu untergeordneten Elementen nicht erneut deklarieren. –
Darüber hinaus kann es deutlicher mit dem ItemContainerStyle ausgedrückt werden. –
Sie könnten einen neuen Stil deklarieren, der von einem vorherigen Stil abgeleitet wurde. –