问题描述
<ListBox Grid.Column="1" Margin="358,44,20,63" Name="scriptBox" Background="#FF282828" Foreground="White" SelectionChanged="ScriptBox_SelectionChanged" BorderThickness="0">
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem
Template="{DynamicResource MenuItemTemplate}"
Header="Delete"
Click="MenuItemDelete_Click" >
</MenuItem>
</ContextMenu>
</ListBox.ContextMenu>
这是我的MenuItem
模板。
<ControlTemplate targettype="{x:Type MenuItem}" x:Key="MenuItemTemplate">
<Border x:Name="Border" Background="#FF282828" Padding="30,5,30,5" BorderThickness="0" Margin="0">
<ContentPresenter ContentSource="Header" x:Name="HeaderHost" RecognizesAccessKey="True" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsHighlighted" Value="true">
<Setter Property="Background" TargetName="Border" Value="#51544e"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<ItemsPanelTemplate x:Key="MenuItemPanelTemplate">
<StackPanel Margin="-3,0" Background="White"/>
</ItemsPanelTemplate>
<Style targettype="{x:Type MenuItem}">
<Setter Property="ItemsPanel" Value="{StaticResource MenuItemPanelTemplate}"/>
</Style>
一切都很好,但是按钮周围都有白色边框。
解决方法
您识别为白色边框的是ContextMenu
本身,其中包含您的MenuItem
。尝试添加更多按钮并更改Background
中的BorderBrush
和ContextMenu
,您将看到。
<ContextMenu Background="Red" BorderBrush="Blue">
像这样改变画笔会导致这种结果,这很明显。
如果您仅为MenuItems
创建了一个自定义控件模板,那么您可能也应该为ContextMenu
创建一个自定义控件模板,如果仅设置画笔不符合您的要求。在示例中可以看到,默认控件模板中仍然存在一条垂直的白线,您可能想摆脱它。尽管它既不是默认模板,也不是完整模板,但您可以从此example开始。请查看此related post,以获取有关如何为ContextMenu
提取默认控制模板的指导。