c# - 如何删除 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>
一切都很好,但按钮周围有白色边框。
解决方案
您识别为白色边框的是ContextMenu
包含您MenuItem
的 s 的本身。尝试添加更多按钮并更改Background
and BorderBrush
,ContextMenu
您会看到。
<ContextMenu Background="Red" BorderBrush="Blue">
像这样改变画笔会导致这个结果,这很明显。
如果您为您创建自定义控件模板,您MenuItems
可能也应该为ContextMenu
. 正如您在示例中看到的那样,仍然有一条垂直白线是默认控件模板的一部分,您可能希望去掉它。您可以从这个示例开始,尽管它既不是默认模板也不是完整的。查看这篇相关文章,了解如何根据需要提取默认控件模板ContextMenu
。
推荐阅读
- javascript - 如何打开和关闭反应引导模式?
- javascript - RangeSlider 使用 HTML、CSS 和 JS 的组合在 Squarespace 中不起作用
- typescript - 通过 discord.js 流式传输 youtube 直播
- java - 无法将 java.lang.Integer 字段 com.persistence.entity.CustomerOrderEntity.tenantId 设置为 java.lang.String
- robotframework - URL重定向问题
- vue.js - 如何在 Vuetify 组件中应用 active-class 属性
- javascript - SyntaxError:app.js 中位置 0 处 JSON 中的意外标记 C
- php - 从 PHP 创建新的 Apache 配置文件
- java - 如何将此方法调用到我的其他文件中?
- php - cookie 已设置,但无法使用 $_COOKIE 访问;被拒绝