这是我的代码
版本1
public void scrollIntoGrid(DataGrid grid)
{
object item = grid.Items[0];
grid.SelectedItem = item;
grid.ScrollIntoView(item);
grid.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
grid.SelectedIndex = 0;
//DataGridRow row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem);
//row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Left));
//row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));
}
版本2
public void scrollIntoGrid(DataGrid grid)
{
object item = grid.Items[0];
grid.SelectedItem = item;
grid.ScrollIntoView(item);
//grid.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
//grid.SelectedIndex = 0;
DataGridRow row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem);
row.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
//row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));
}
所有的迭代都转到网格中的第二行而不是第一行。
2条答案
按热度按时间jtjikinw1#
下面的代码对我有用。单击按钮时,它选择第一行。如果这就是你对
go to first row
的意思。如果您对第一行的解释是标题行,那么这将不起作用。你的scroolIntoGrid函数可能看起来像这样:
完整代码在这里:
文件背后的代码:
}
XAML文件:
根据你的评论,你实际上想从一个文本框上的箭头向下键跳转,下面的变化做了我的伎俩。
添加了一个带有
PreviewKeyDown
事件的XAML文本框在代码后面:
ScrollIntoGrid保持与上面描述的相同。
hyrbngr72#
回到这一点后,一段时间,我发现工作的解决方案是在文本框中的KeyUp事件。