Gestaltete verschachtelte Elemente in WPF

Angenommen, Sie haben ein verschachteltes element-Struktur, zum Beispiel ein ContextMenu mit MenuItems:

<ContextMenu Style="{StaticResource FooMenuStyle}">
    <MenuItem Style="{StaticResource FooMenuItemStyle}"/>
    ...
</ContextMenu>

Können Sie problemlos anwenden von Stilen oder Vorlagen, um das ContextMenu-oder MenuItem-Elemente. Aber wenn das MenuItem-Stil gehört zu den Menü-Stil ist es Recht umständlich und überflüssig", um es hinzuzufügen, um jedes MenuItem-element.

Gibt es eine Möglichkeit, diese automatisch auf die Kind-Elemente? Damit können Sie einfach schreiben:

<ContextMenu Style="{StaticResource FooMenuStyle}">
    <MenuItem/>
    ...
</ContextMenu>

Es wäre nett, wenn FooMenuStyle könnte Stil mit MenuItem-Elemente, aber das scheint nicht möglich zu sein.

Edit: Die Menü-Beispiel ist wohl irreführend, da war ich mir nicht bewusst ItemContainerStyle und die Absicht war, für eine Allgemeine Lösung. Basierend auf den zwei Antworten, die ich haben kommen mit zwei Lösungen: eine Allgemeine Variante und eine für ItemContainerStyle und dergleichen:

<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>

InformationsquelleAutor der Frage gix | 2009-03-20

Schreibe einen Kommentar