在DataGrid中的选择上单击鼠标右键
本文关键字:单击 鼠标 右键 选择 DataGrid | 更新日期: 2023-09-27 18:01:11
我在C#项目中用XAML创建了一个DataGrid。我为这些行添加了一个上下文菜单。基本上,当用户直接点击单元格时,它应该在当前窗口中打开相关项目,这是在SelectionChanged
事件上实现的。
但是,如果用户右键单击一行,它应该显示上下文菜单而不选择该行,这样用户就可以在上下文菜单中选择一个项目,以便在新窗口中打开相关项目。因此,他们可以同时查看已经选择的项目和新项目,但当右键单击选择行时,用户会在当前窗口和新窗口中看到新选择的项目。
如何停止右键单击操作以显示上下文菜单选择单元格?
对于我的解决方案,我必须覆盖以下两个事件处理程序(即PreviewMouseRightButtonDown和PreviewMouserRightButton Up(。另外,我不确定为什么ItemsSource的数据绑定不起作用,所以我必须手动绑定它。
private void ResultDataGrid_PreviewMouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (sender is DataGrid dg)
{
if (this.DataContext is PipelineStepResultViewModel dataContext
&& dataContext.DatagridMenuItems != null)
{
dg.ContextMenu.ItemsSource = dataContext.DatagridMenuItems;
}
}
e.Handled = true;
}
private void ResultDataGrid_PreviewMouseRightButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (sender is DataGrid dg && dg.ContextMenu.ItemsSource != null)
{
ResultDataGrid.ContextMenu.IsOpen = true;
}
e.Handled = true;
}