所以我重视上下文菜单(右键菜单),以一个WPF列表视图。
不幸的是,当你右键点击它会弹出菜单,你在任何项目同时选择 。 有没有一种方法来关闭这个右键单击选择的行为,同时还允许在上下文菜单?
所以我重视上下文菜单(右键菜单),以一个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;
}
由于预览事件, 隧道 ,这将来自于ListViewItems防止它们被选中发生阻塞RightMouseButtonDown,但不能防止对ListView中RightMouseButtonDown等仍允许文本菜单打开。
这个环节也似乎有所帮助:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/e7f213e3-d8c0-4d13-8c39-51b214715c8a