[英]wpf listview right-click problem
所以我已经将一个上下文菜单(右键菜单)附加到wpf listview。
不幸的是,当你右键单击它时会显示菜单并选择你结束的任何项目。 有没有办法在仍允许上下文菜单的同时关闭此右键单击选择行为?
关键是将PreviewMouseRightButtonDown事件设置在正确的位置。 正如您将注意到的,即使没有ContextMenu右键单击ListViewItem也会选择该项,因此我们需要在每个项目上设置事件,而不是在ListView上设置事件。
<ListView>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<EventSetter Event="PreviewMouseRightButtonDown"
Handler="OnListViewItemPreviewMouseRightButtonDown" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="Menu Item">Item 1</MenuItem>
<MenuItem Header="Menu Item">Item 2</MenuItem>
</ContextMenu>
</ListView.ContextMenu>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
<ListViewItem>Item</ListViewItem>
</ListView>
private void OnListViewItemPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
Trace.WriteLine("Preview MouseRightButtonDown");
e.Handled = true;
}
由于预览事件是隧道,这将阻止在ListViewItems上发生RightMouseButtonDown,阻止它们被选中,但不会阻止ListView上的RightMouseButtonDown,因此仍然允许ContextMenu打开。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.