WPF列表视图中单击鼠标右键问题
-
21-08-2019 - |
题
所以我已附加的上下文菜单(右击菜单)一个WPF列表视图。
不幸的是,当你右键点击它带来了菜单和同时选择的你是什么上项目。有没有一种方法来关闭这个右键单击选择的行为,同时还允许在上下文菜单?
解决方案
的关键是设置在正确的位置中的PreviewMouseRightButtonDown事件。正如你会发现,即使没有一个文本菜单右键点击一个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;
}
由于预览事件是隧道这将阻止从RightMouseButtonDown发生在ListViewItems防止它们被选择,但不能防止RightMouseButtonDown上ListView和所以仍允许文本菜单打开。
不隶属于 StackOverflow