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。