我想我首先要说我的WPF程序有一个ListBox。显然,这里面有一些ListBoxItems。每个ListBoxItem都填充了数据,其中一些ListBoxItems比其他ListBoxItems更宽或更窄。
为了给ListBoxItem一个上下文菜单,我在ListBoxItem的数据模板周围放置了一个边框,并将上下文菜单附加到该边框。它工作得很好,但有个麻烦。让我给你们展示一幅图片来说明:

所以你可以在这里看到,上面的项目有两个项目。这些项目有黑色的边框,在这张图片中,第一个被选中。但是,如您所见,蓝色选择区域大于项目本身(用黑色边框表示)。现在,外部区域可以选择一个ListBoxItem,但是如果我在该额外区域右键单击,当然它不会为该项目提供上下文菜单。
我认为我的方式有点错误,因为这让用户感到很困惑。我只是想知道有什么更好的方法,我希望这里的人能帮助我。
谢谢。
发布于 2018-04-19 13:49:23
可以将contextmenu附加到listboxitem本身。大致如下:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
.....
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>或者您可以将context菜单放在列表框本身上:
<ListBox>
<ListBox.ContextMenu>
<ContextMenu>
...
</ContextMenu>
</ListBox.ContextMenu>你可能会认为..。啊,但是我怎么知道他们点击了哪一项呢。这将被选中。您可以绑定选择的项并使用它。您没有询问如何绑定或类似的问题,但是您可能会发现在listbox或窗口的资源中定义contextmenu是最简单的。这样,它就在窗口的数据文本中,您可以绑定到它的视图模型中的命令。
https://stackoverflow.com/questions/49922078
复制相似问题