我将一个DataTable绑定到wpf中的datagrid。第一列具有唯一值。现在我想自动选择第一列中第一列单元格具有给定值的单元格。我该怎么做?例如,这是我的datagrid:
姓名|年龄
猫| 2
狗| 3
当用户输入'dog'时,我需要选择'3'。
我试过这里显示的方法:
How to select a row or a cell in WPF DataGrid programmatically?
但是,我无法弄清楚显示的行号。即使我知道dataTable的行号,显示号也可以不同,因为我允许用户对表进行排序。
非常感谢。
答案 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]));
}
即使您对行进行重新排序,它也应该有效。