这里有一个项目,我需要在WPF应用程序中自定义上下文菜单,其中将在所有MenuItems的底部放置一个按钮。
但是,如果我要通过XAML添加按钮,它将作为集合中的另一项出现在上下文菜单中,鼠标移过高亮显示将作用于它。
我希望有一个上下文菜单调优到网格样的样式,这样我就可以自定义样式下的它。
有什么想法可以实现这一点(最好是在XAML中)吗?
您可以从ContextMenu
的示例样式/模板(从这里开始)开始,并根据您的需要对其进行调整。
<Style TargetType="{x:Type ContextMenu}">
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Grid.IsSharedSizeScope" Value="true" />
<Setter Property="HasDropShadow" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContextMenu}">
<Border x:Name="Border"
Background="{StaticResource MenuPopupBrush}"
BorderThickness="1">
<Border.BorderBrush>
<SolidColorBrush Color="{StaticResource BorderMediumColor}" />
</Border.BorderBrush>
<StackPanel IsItemsHost="True"
KeyboardNavigation.DirectionalNavigation="Cycle" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="HasDropShadow" Value="true">
<Setter TargetName="Border" Property="Padding" Value="0,3,0,3" />
<Setter TargetName="Border" Property="CornerRadius" Value="4" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
对于项中带有按钮的菜单项样式,可以使用以下代码:
注意-向标头
中添加项将使其保持在相同的菜单项
中,但如果只添加到菜单项
中,则将被视为新的菜单项
。
<ContextMenu>
<ContextMenu.Items>
<MenuItem>
<MenuItem.Header>
<StackPanel>
<TextBlock Text="Item 1"/>
<Button Content="Button 1" Margin="5"/>
</StackPanel>
</MenuItem.Header>
</MenuItem>
<MenuItem>
<MenuItem.Header>
<StackPanel>
<TextBlock Text="Item 2"/>
<Button Content="Button 2" Margin="5"/>
</StackPanel>
</MenuItem.Header>
</MenuItem>
</ContextMenu.Items>
</ContextMenu>
这将是生成的ContextMenu
:
从那里,您可以为MenuItem
或按钮
等设置样式。
希望有帮助!
在XAML中它其实非常简单。只需在要为其设置上下文菜单的元素下定义它。
<Border>
<Border.ContextMenu>
<ContextMenu>
<ContextMenu.Template>
<ControlTemplate>
<Grid>
<!--Put anything you want in here.-->
</Grid>
</ControlTemplate>
</ContextMenu.Template>
</ContextMenu>
</Border.ContextMenu>
</Border>
这是我的上下文菜单的样式: 这是我的MenuItem的样式: 命令绑定工作正常,但图标可见性绑定显示以下错误: 系统.Windows。数据错误:4:无法找到引用“RelativeSource FindAncestor,AncestorType=”System.Windows.Controls的绑定源。上下文菜单',祖先级别=“1”。BindingExpression:路径=PlacementTar
我在Wordpress中有一个名为“svg”的ACF字段菜单 为了创建我的菜单,我这样做: 我像这样显示我的菜单: 在我的Foreach中,我试图从我的菜单中调用我的ACF字段,如下所示: 但它不起作用(空)。我迷路了。如何获取我的 ACF 字段? 真是太感谢你了
1. 小程序更多菜单功能说明 为了支持 App 内的不同业务需求、支持不同类型的分享,当前 SDK 支持配置更多菜单,按类型可分为 onMiniProgram 和 common 类型(均在管理后台配置) common: 该类型无需小程序添加额外处理 onMiniProgram: 该类型菜单在点击时,会向小程序获取数据用以提供给 App 的业务处理 如果菜单的按钮类型是 onMiniProgram
自定义菜单是指为单个应用设置自定义菜单功能,所以在使用时请注意调用正确的应用实例。 $config = [ 'corp_id' => 'xxxxxxxxxxxxxxxxx', 'secret' => 'xxxxxxxxxx', // 应用的 secret //... ]; $app = Factory::work($config); 创建菜单 $menus = [
我正在尝试为AWT Graphics2D实现类似于SWT GC的xor模式绘图。使用内置XORComposite不是一个选项,因为它不像SWT那样实现xor模式绘图。 SWT xor模式绘图通过二进制异或组合源颜色和目标颜色。AWT XORComposite(可通过)使用恒定的xor颜色,该颜色通过二进制异或与源颜色组合,即目标颜色不影响结果颜色。 所以我唯一的选择就是编写我自己的Composit
如何将自定义下拉/弹出菜单锚定到按钮? 我需要它像弹出菜单一样工作(锚定到视图),并在单击菜单中的某个项目时执行某些操作。 如何通过代码将项目添加到菜单中,保持菜单的高度,并使其可滚动,如果有超过5个项目。我不需要添加任何图像,只是文本。