0

wpf で DataTable をデータグリッドにバインドしました。最初の列には一意の値があります。ここで、最初の列のセルが指定された値を持つ 2 番目の列のセルを自動選択したいと思います。どうすればそれを達成できますか?たとえば、ここに私のデータグリッドがあります:

名前 | 年齢
猫 | 写真 2
犬 | 3

ユーザーが「犬」と入力するときは、「3」を選択する必要があります。

ここに示すメソッドを試しました:
How to select a row or a cell in WPF DataGrid programmatic?
しかし、表示されている行番号がわかりません。dataTable の行番号はわかっていても、ユーザーがテーブルを並べ替えられるようにしているため、表示番号が異なる場合があります。

どうもありがとう。

4

1 に答える 1

1

グリッドの 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]));
}

行を再ソートしても機能するはずです。

于 2012-04-26T19:27:33.253 に答える