ListBoxItems上的WPF上下文菜单

时间:2018-04-19 13:14:34

标签: wpf listbox

我想我首先会说我的WPF程序有一个ListBox。显然,这是一些ListBoxItems。每个ListBoxItem都填充了数据,其中一些ListBoxItems比其他ListBoxItem更宽或更窄。

为了给ListBoxItem一个上下文菜单,我在ListBoxItem的数据模板周围放置了一个边框,并将上下文菜单附加到该边框。它运作良好,但有一个障碍。让我给你看一张图片来说明:

enter image description here

所以你可以在这里看到顶部项目里面有两个项目。那些所述项目具有黑色边框,并且在该图像中选择了第一个。但是,如您所见,蓝色选择区域大于项目本身(由黑色边框表示)。现在外部区域可以选择一个ListBoxItem,但如果我右键单击该额外区域,当然它不会给我该项目的上下文菜单。

我认为我的方式有点不对,因为这会让用户感到困惑。我只是想知道可能有什么更好的方法,我希望有人可以帮助我。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以将上下文菜单附加到listboxitem本身。 大致是:

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="ContextMenu">
            <Setter.Value>
                <ContextMenu>
                    .....
                </ContextMenu>
            </Setter.Value>
        </Setter>
    </Style>
</ListBox.ItemContainerStyle>

或者您可以将上下文菜单放在列表框本身上:

<ListBox>
    <ListBox.ContextMenu>
        <ContextMenu>
            ...
        </ContextMenu>
    </ListBox.ContextMenu>

您可能会想......啊但我怎么知道他们点击了哪个项目。 这将被选中。 您可以绑定selecteditem并使用它。 您没有询问如何绑定或类似但您可能会发现在列表框或窗口的资源中定义上下文菜单是最简单的。这样它就在窗口的datacontext中,你可以绑定到它的viewmodel中的命令。