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

时间:2013-11-20 13:00:49

标签: c# wpf datagrid row cell

http://i.stack.imgur.com/zllpr.png

我希望点击此数据网格的结束行(在上图中)。单击此按钮时,我希望能够找到单击的行并将行号传递给另一个表单。

以下是我尝试过的一些尝试:

  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”,因此我假设这不是行号值。

3 个答案:

答案 0 :(得分:0)

Ben查看code,它通过简单的父母导航技术告诉您检测单击的列,单元格和行的机制。

答案 1 :(得分:0)

类似的问题已被回答here看看。

答案 2 :(得分:0)

您可以使用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
    }
}