c# – wpf listview右键单击问题
发布时间:2020-12-15 03:50:56 所属栏目:百科 来源:网络整理
导读:所以我附上一个上下文菜单(右键单击菜单)到一个wpf listview. 不幸的是,当您右键单击它将打开菜单并选择任何您结束的项目.有没有办法关闭这个右键选择行为,同时还允许上下文菜单? 解决方法 关键是将PreviewMouseRightButtonDown事件设置在正确的位置.你会注
所以我附上一个上下文菜单(右键单击菜单)到一个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; } 由于预览事件为tunneling,因此将阻止RightMouseButtonDown发生在ListViewItems上,从而阻止它们被选中,但不会阻止ListView上的RightMouseButtonDown,因此仍允许ContextMenu打开. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |