C# WPF:如何从网格控件的所有区域打开ContextMenu
我正在尝试向WPF中列表框中的项目添加ContextMenuC# WPF:如何从网格控件的所有区域打开ContextMenu,c#,wpf,xaml,contextmenu,C#,Wpf,Xaml,Contextmenu,我正在尝试向WPF中列表框中的项目添加ContextMenu <ListBox.ItemTemplate> <DataTemplate> <Border> <Grid> <Grid.ContextMenu> <ContextMenu>
<ListBox.ItemTemplate>
<DataTemplate>
<Border>
<Grid>
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header = "Menu item 1"/>
<MenuItem Header = "Menu item 2"/>
<MenuItem Header = "Menu item 3"/>
</ContextMenu>
</Grid.ContextMenu>
........
........
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
........
........
问题是ContextMenu只会在单击网格的实际上下文时打开,我希望能够通过单击Listbox项上的任意位置打开菜单
我应该用其他控件来包装网格吗?我已经有好几个月没有进行任何可靠的WPF开发了(从应用程序开发转移到实际的游戏团队) 在内存中,您需要设置
边框上的上下文菜单
属性
,然后设置边框。背景=透明
。将背景设置为透明可确保它将参与命中检测
另一种解决方案是确保网格元素水平和垂直拉伸以适合容器
还可以将上下文菜单作为静态资源拉出,以便将来更容易查找/编辑
希望这会有帮助(我的记忆不会让我失望)
编辑:我之前已经回答了一个关于StackOverflow的类似问题,请参阅我在上的回答。这个答案更加完整,因为它将重点放在了列表项上,正如您已经意识到的那样,-多亏了丹尼斯,-您必须设置一些背景。是的,透明背景也可以:
<Grid Background="Transparent">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header = "Menu item 1"/>
<MenuItem Header = "Menu item 2"/>
<MenuItem Header = "Menu item 3"/>
</ContextMenu>
</Grid.ContextMenu>
........
........
</Grid>
........
........
参考资料:请参阅