如何检查哪个DataGrid在ContextMenu中触发了一个事件

本文关键字:事件 一个 DataGrid 何检查 检查 ContextMenu | 更新日期: 2023-09-27 18:08:53

我创建了一个上下文菜单,该选项允许用户清除DataGrid中的所有项。所有工作都很好,但我想用一种方法优化算法,特别是我想这样做:

  1. 用户进入三个DataGrid中的一个,按鼠标右键,删除该表中的选项

  2. 一个启动方法的方法,这个方法应该这样做:

    • 检查哪个表触发了事件,获取DataGrid名称并删除已触发事件的DataGrid的所有行。这是我的代码XAML code:

      ContextMenu x:Key="Squadre_ContextMenu">
          <MenuItem Header="Pulisci Tabella" Click="ClearTable_Click">
          </MenuItem>
      </ContextMenu>
      
c#代码方法调用:
private void ClearTable_Click(object sender, RoutedEventArgs e)
    {
        Console.WriteLine(((DataGrid)sender).Name.ToString()); //exception returned...
        //datagrid.ClearValue();
    }

在类中我有属性函数

 public static void removeRows(DataGrid name passed by parameter)
    {
        var grid = parameter passed;
        var mygrid = parameter passed;
        if (grid.SelectedIndex >= 0)
        {
            for (int i = grid.SelectedItems.Count - 1; i >= 0; i--)
            {
                mygrid.Items.Remove(grid.SelectedItems[i]);
            };
        }
        grid = mygrid;
    }

注意:datagrid变量是类datagrid的一个实例。该类包含删除所有行的函数。

如何检查哪个DataGrid在ContextMenu中触发了一个事件

为什么要传递网格的名称呢?为什么不直接将网格本身传递给函数并以这种方式对其进行操作呢?

    private void ClearDataGrid(DataGrid aDataGrid)
    {
        // clear aDataGrid's contents here
    }

只需调用函数,并将您想要清除的DataGrid传递给它。

您可以使用以下信息来确定单击了哪个控件:

确定在

上使用了什么控件