wpf listview右键单击问题

所以我已经将一个上下文菜单(右键菜单)附加到wpf listview。

不幸的是,当你右键单击它时会显示菜单并选择你所在的任何项目。 有没有办法在仍允许上下文菜单的同时关闭此右键单击选择行为?

关键是将PreviewMouseRightButtonDown事件设置在正确的位置。 正如您将注意到的,即使没有ContextMenu,右键单击ListViewItem也会选择该项,因此我们需要在每个项目上设置事件,而不是在ListView上设置事件。

      Item 1 Item 2   Item Item Item Item Item Item  

 private void OnListViewItemPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) { Trace.WriteLine("Preview MouseRightButtonDown"); e.Handled = true; } 

由于预览事件是隧道,这将阻止在ListViewItems上发生RightMouseButtonDown,阻止它们被选中,但不会阻止ListView上的RightMouseButtonDown,因此仍然允许ContextMenu打开。