我有代码(下面)应该生成一个样式化的上下文菜单。不幸的是,菜单项还显示了一个白色"不应该在那里的一点(见下文)。我试过把它设计出来,但它没有用。任何帮助将不胜感激
<Style TargetType="ContextMenu">
<Setter Property="Background" Value="{StaticResource backgroundDark}" />
<Setter Property="BorderBrush" Value="{StaticResource highlight}" />
<Style.Resources>
<Style TargetType="MenuItem">
<Setter Property="Foreground" Value="Black" />
<Setter Property="Background" Value="Transparent" />
<Style.Triggers>
<Trigger Property="IsHighlighted" Value="True">
<Setter Property="Foreground" Value="{StaticResource highlightLight}" />
</Trigger>
</Style.Triggers>
</Style>
</Style.Resources>
</Style>
答案 0 :(得分:1)
你想要覆盖
StackPanel Margin
的MenuItems
然后使用相同的值覆盖ItemsPanel
所以基本上除了你的风格之外你还可以添加2个简单的样式。
我添加了一个示例:
<Grid>
<Grid.Resources>
<ItemsPanelTemplate x:Key="GlobalMenuItemPanelTemplate">
<StackPanel Margin="-25,0,0,0" Background="White"/>
</ItemsPanelTemplate>
<Style TargetType="{x:Type ContextMenu}">
<Setter Property="ItemsPanel" Value="{StaticResource GlobalMenuItemPanelTemplate}"/>
</Style>
</Grid.Resources>
<Label Background="Bisque" Content="Right Click it" VerticalAlignment="Center" HorizontalAlignment="Center">
<Label.ContextMenu>
<ContextMenu>
<MenuItem Header="Menu item 1" />
<MenuItem Header="Menu item 2" />
<Separator />
<MenuItem Header="Menu item 3" />
</ContextMenu>
</Label.ContextMenu>
</Label>
</Grid>