C# WPF:如何从网格控件的所有区域打开ContextMenu

C# WPF:如何从网格控件的所有区域打开ContextMenu,c#,wpf,xaml,contextmenu,C#,Wpf,Xaml,Contextmenu,我正在尝试向WPF中列表框中的项目添加ContextMenu <ListBox.ItemTemplate> <DataTemplate> <Border> <Grid> <Grid.ContextMenu> <ContextMenu>

我正在尝试向WPF中列表框中的项目添加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>

........
........
参考资料:

请参阅