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

时间:2012-04-26 18:29:53

标签: wpf datagrid

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

姓名|年龄
 猫| 2
 狗| 3

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

我试过这里显示的方法:
How to select a row or a cell in WPF DataGrid programmatically?
但是,我无法弄清楚显示的行号。即使我知道dataTable的行号,显示号也可以不同,因为我允许用户对表进行排序。

非常感谢。

1 个答案:

答案 0 :(得分:1)

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

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]));
}

即使您对行进行重新排序,它也应该有效。