0

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

姓名 | 年龄
猫 | 2
狗 | 3

当用户输入“狗”时,我需要选择“3”。

我尝试了这里显示的方法:
How to select a row or a cell in WPF DataGrid programmatically?
但是,我无法弄清楚显示的行号。即使我知道 dataTable 的行号,由于我允许用户对表进行排序,因此显示编号可能会有所不同。

非常感谢。

4

1 回答 1

1

将网格的 SelectionUnit 属性设置为“单元格”,并假设您使用表的 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]));
}

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

于 2012-04-26T19:27:33.253 回答