C# 如何在WPF上查找DataGrid中单击的单元格的行值?

C# 如何在WPF上查找DataGrid中单击的单元格的行值?,c#,wpf,datagrid,row,cell,C#,Wpf,Datagrid,Row,Cell,我想点击这个数据网格的最后一行(上图)。单击此项时,我希望能够找到单击的行,并将行号传递给另一个表单 以下是我尝试过的几次尝试: private void CellClicked(object sender, MouseButtonEventArgs e) { int cell = dgFake.Items.IndexOf(((DataRowView)dgFake.Items[5]).Row); xamlAllocteAudits window =

我想点击这个数据网格的最后一行(上图)。单击此项时,我希望能够找到单击的行,并将行号传递给另一个表单

以下是我尝试过的几次尝试:

  private void CellClicked(object sender, MouseButtonEventArgs e)
    {
        int cell = dgFake.Items.IndexOf(((DataRowView)dgFake.Items[5]).Row);

        xamlAllocteAudits window = new xamlAllocteAudits
        {
            DataContext = cell
        };
        window.Show();
无论我在列中的哪个位置单击,此尝试都保留为值'-1'

private void CellClicked(object sender, MouseButtonEventArgs e)
    {
        int cell = dgFake.Items.IndexOf(dgFake.SelectedIndex);

        xamlAllocteAudits window = new xamlAllocteAudits
        {
            DataContext = cell
        };
        window.Show();

此尝试显示一个不同的数字,从“-1”开始,每次单击列中的单元格时都会递增,但即使单击底部的单元格,第一次单击也始终是“-1”,因此我假设这不是行数值

Ben look告诉您通过简单的导航技术检测已单击的列、单元格和行的机制。

类似的问题已经得到回答,请看。

您可以使用
SelectionChanged
事件来实现:

private void dataGrid_SelectionChanged(object sender, EventArgs e) 
{
    foreach (var row in dataGrid.SelectedItems) 
    {
        int index = dataGrid.Items.IndexOf(row);
    }
}
如果使用单行选择,则可以执行以下操作:

private void dataGrid_SelectionChanged(object sender, EventArgs e) 
{
    int index = dataGrid.SelectedIndex;
}
如果您只需要单元格数据,则可以执行以下操作:

private void dataGrid_SelectionChanged(object sender, EventArgs e) 
{
    foreach (DataGridCellInfo cell in dataGrid.SelectedCells) 
    {
        // do something with cell
    }
}

我在XAML中有一个处理程序,它被设置为我的方法。当我将代码移动到Selectionchanged时,它从未命中该方法?也许是因为我没有改变选择?谢谢你的评论,我试过了,结果又出现了-1。