首页 > 解决方案 > 如何删除 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>

一切都很好,但按钮周围有白色边框。

标签: c#wpfcontextmenu

解决方案


您识别为白色边框的是ContextMenu包含您MenuItem的 s 的本身。尝试添加更多按钮并更改Backgroundand BorderBrushContextMenu您会看到。

<ContextMenu Background="Red" BorderBrush="Blue">

像这样改变画笔会导致这个结果,这很明显。

在此处输入图像描述

如果您为您创建自定义控件模板,您MenuItems可能也应该为ContextMenu. 正如您在示例中看到的那样,仍然有一条垂直白线是默认控件模板的一部分,您可能希望去掉它。您可以从这个示例开始,尽管它既不是默认模板也不是完整的。查看这篇相关文章,了解如何根据需要提取默认控件模板ContextMenu


推荐阅读