我希望在ItemsSource更改后将焦点放在所选行上。我想我差不多完成了,但是没有一个接受的答案对我有用:(
这是我的代码:
public void UpdateItemsSource()
{
IdentifySelectedError(); //get "selectedRowIndex"
DataGridRow dgr = (DataGridRow)DataGrid.ItemContainerGenerator.ContainerFromIndex(selectedRowIndex);
using (var context = new Context())
{
DataGrid.ItemsSource = context.Error.Take(100).ToList();
}
//Everything does not work:
//DataGrid.SelectedIndex = selectedRowIndex;
//dgr.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
//dgr.Focus();
//DataGrid.Rows(dgr).Selected = true;
//DataGrid.ScrollIntoView(dgr);
//FocusManager.SetIsFocusScope(dgr, true);
}
我做错了什么?
编辑:
我注意到当我更改ItemsSource时,selectedRowInde的值为0.这就是为什么它无法将焦点设置在先前选择的Row上。任何想法如何抓住它?
答案 0 :(得分:1)
将行索引保存到另一个int并将所选项目设置为它(或类似的东西):
public void UpdateItemsSource()
{
IdentifySelectedError(); //get "selectedRowIndex"
using (var context = new Context())
{
DataGrid.ItemsSource = context.Error.Take(100).ToList();
}
MainDataGrid.SelectedItem = MainDataGrid.Items[indexOfRow];
MainDataGrid.ScrollIntoView(MainDataGrid.Items[indexOfRow]);
}