如何删除上下文菜单边框
How to remove ContextMenu border
所以我试图让按钮出现在我 ListBox
的右键单击中。
<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,0,0" Background="White"/>
</ItemsPanelTemplate>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="ItemsPanel" Value="{StaticResource MenuItemPanelTemplate}"/>
</Style>
一切正常,但按钮周围有白色边框。
您认为白色边框是包含您的 MenuItem
的 ContextMenu
本身。尝试添加更多按钮并更改 ContextMenu
的 Background
和 BorderBrush
,您会看到。
<ContextMenu Background="Red" BorderBrush="Blue">
像这样换笔刷会导致这个结果,很明显。
如果您为 MenuItems
创建自定义控件模板,您也应该为 ContextMenu
创建自定义控件模板,如果仅设置画笔不符合您的要求。正如您在示例中看到的,默认控件模板中仍然有一条垂直白线,您可能希望将其删除。如果需要,您可以从此 example, although it is neither the default template nor complete. Look at this related post 开始获取有关如何为 ContextMenu
提取默认控件模板的指导。
所以我试图让按钮出现在我 ListBox
的右键单击中。
<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,0,0" Background="White"/>
</ItemsPanelTemplate>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="ItemsPanel" Value="{StaticResource MenuItemPanelTemplate}"/>
</Style>
一切正常,但按钮周围有白色边框。
您认为白色边框是包含您的 MenuItem
的 ContextMenu
本身。尝试添加更多按钮并更改 ContextMenu
的 Background
和 BorderBrush
,您会看到。
<ContextMenu Background="Red" BorderBrush="Blue">
像这样换笔刷会导致这个结果,很明显。
如果您为 MenuItems
创建自定义控件模板,您也应该为 ContextMenu
创建自定义控件模板,如果仅设置画笔不符合您的要求。正如您在示例中看到的,默认控件模板中仍然有一条垂直白线,您可能希望将其删除。如果需要,您可以从此 example, although it is neither the default template nor complete. Look at this related post 开始获取有关如何为 ContextMenu
提取默认控件模板的指导。