WPF-右键单击ListView重置选择,但我仍然想要项目上下文菜单



我有一个我想右键单击的项目的列表视图(提供删除,重命名等选项。。我想在保持上下文菜单时避免使用该功能。如果选择了多个项目,则应保持选择,以便用户可以通过上下文菜单删除它们。

这里提出的一种解决方案是仅禁用单个项目上的正确的鼠标按钮下降事件,但是我需要该上下文菜单,因为它与listView本身的菜单不同。因此,我似乎没有想法。

编辑:我不必清除项目,然后每次重置选择,因为此listView可以包含100多个项目。它是虚拟化的,但仍然是我想到的第一件事,这是我的最后一件事。将我必须不断地与ListView同步的列表保持一边,这将是令人讨厌的,并导致懒惰的代码。

我需要能够多选列表视图项目,然后右键单击并执行一个将考虑整个选择的命令。

我也用列表框遇到了这个问题。我最终通过将其标记为e.Handled=true,并在鼠标up上执行鼠标向下行为。

    protected override void OnMouseUp(MouseButtonEventArgs e)
    {
        if (e.ChangedButton == MouseButton.Left)
        {
            var obj = ContainerFromElement((Visual) e.OriginalSource);
            if (obj == null)
                return;`
            var fe = obj as FrameworkElement;
            var item = fe as ListBoxItem;
            if (item != null)
            {
                SelectedItem = item.DataContext;
            }
        }
    }
    protected override void OnPreviewMouseDown(MouseButtonEventArgs e)
    {
        if(e.LeftButton != MouseButtonState.Pressed)
            e.Handled = true;
    }

最新更新