选择包含wpf中给定值的datagrid单元格

选择包含wpf中给定值的datagrid单元格,wpf,datagrid,Wpf,Datagrid,我在wpf中将DataTable绑定到datagrid。第一列具有唯一的值。现在我想在第二列中自动选择一个单元格,其第一列单元格具有给定值。我应该如何做到这一点?例如,下面是我的datagrid: 姓名|年龄 第2类 狗| 3 当用户输入'dog'时,我需要选择'3' 我尝试了此处显示的方法: 但是,我无法计算显示的行号。尽管我知道dataTable的行号,但由于我允许用户对表格进行排序,因此显示的行号可能会有所不同。非常感谢。将网格的SelectionUnit属性设置为“Cell”,并假设您

我在wpf中将DataTable绑定到datagrid。第一列具有唯一的值。现在我想在第二列中自动选择一个单元格,其第一列单元格具有给定值。我应该如何做到这一点?例如,下面是我的datagrid:

姓名|年龄
第2类
狗| 3

当用户输入'dog'时,我需要选择'3'

我尝试了此处显示的方法:


但是,我无法计算显示的行号。尽管我知道dataTable的行号,但由于我允许用户对表格进行排序,因此显示的行号可能会有所不同。非常感谢。

将网格的SelectionUnit属性设置为“Cell”,并假设您向DataGrid提供了表的DefaultView:

private void button1_Click(object sender, RoutedEventArgs e)
{
  // Search for the source-row.
  var Element = MyDataTable.AsEnumerable()
    .FirstOrDefault(x => x.Field<string>("Name") == "horse");

  if (Element == null) return;

  // Found the row number in the DataGrid
  var RowOnGrid = MyGrid.Items.OfType<DataRowView>()
    .Select((a, Index) => new { data=a.Row, index = Index })
    .Where(x=> x.data == Element)
    .Select(x => x.index)
    .FirstOrDefault();

  // Assuming the desired column is the second one.
  MyGrid.SelectedCells.Clear();
  MyGrid.SelectedCells.Add(new DataGridCellInfo(MyGrid.Items[RowOnGrid], MyGrid.Columns[1]));
}
private void按钮1\u单击(对象发送者,路由目标)
{
//搜索源行。
var Element=MyDataTable.AsEnumerable()
.FirstOrDefault(x=>x.Field(“Name”)==“horse”);
if(Element==null)返回;
//在DataGrid中找到了行号
var rowngrid=MyGrid.Items.OfType()
.Select((a,Index)=>new{data=a.Row,Index=Index})
.其中(x=>x.data==元素)
.选择(x=>x.index)
.FirstOrDefault();
//假设所需的列是第二列。
MyGrid.SelectedCells.Clear();
添加(新的DataGridCellInfo(MyGrid.Items[RownGrid],MyGrid.Columns[1]);
}

即使您对行重新排序,它也应该可以工作。

哇,这是一个多么快速、简洁、有效的答案!!我从中学到了很多。非常感谢。很高兴知道它起作用了。顺便说一下,欢迎来到StackOverflow!我建议您将用户名更改为更具吸引力的用户名:o)