estrutura WPF ContextMenu Estilo
-
12-09-2019 - |
Pergunta
Eu gostaria de remodelar um ContextMenu
, mas eu tenho uma pergunta sobre como estruturar minha XAML.
Em meus recursos do aplicativo, eu tenho algo parecido com isto:
<ControlTemplate TargetType="MenuItem" x:Key="MenuItemTemplate">
...
</ControlTemplate>
<ControlTemplate TargetType="ContextMenu" x:Key="ContextMenuTemplate">
<ControlTemplate.Resources>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Template" Value="{StaticResource MenuItemTemplate}" />
</Style>
</ControlTemplate.Resources>
...
</ControlTemplate>
<Style TargetType="{x:Type ContextMenu}" x:Key="RadialContextMenu">
<Setter Property="Template" Value="{StaticResource ContextMenuTemplate}" />
</Style>
Este parece funcionar bem, menus de contexto com o estilo ContextMenuTemplate
ter estilo itens do menu, e outros menus de contexto não são afetados, sem ter que definir um estilo explicitamente em qualquer MenuItems
.
<ContextMenu x:Name="menu" Style="{StaticResource RadialContextMenu}">
<MenuItem Header="Foo"/>
<MenuItem Header="Bar"/>
</ContextMenu>
No entanto, eu não gosto de ter essa seção ControlTemplate.Resources
. Eu prefiro tê-lo, por exemplo, dentro do estilo x:Key="RadialContextMenu"
, de modo que ambos os modelos de controle são "limpa".
Como posso mover o elemento de estilo fora do segundo ControlTemplate
?
Solução
Tente isto:
<Style TargetType="{x:Type ContextMenu}" x:Key="RadialContextMenu">
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Template" Value="{StaticResource MenuItemTemplate}" />
</Style>
</Setter.Value>
</Setter>
</Style>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow