2013-11-20 66 views
1

http://i.stack.imgur.com/zllpr.png如何查找在WPF上的DataGrid中单击的单元格的行值?

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

以下是我已经尝试了一些尝试:

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” ,所以我认为这不是行号值。

回答

0

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

0

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

+0

感谢您的评论,我试了这个,它再次出现-1。 –

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 
    } 
} 
+0

我有一个处理程序在XAML中设置为我的方法CellClicked。当我将我的代码移动到Selectionchanged时,它从来没有碰到过这种方法?也许是因为我没有改变选择? –

相关问题