我尝试了以下操作,所有这些都在函数ScrollIntoView上失败并给出NullReferenceException:
// doesn't work
grid.SelectedItem = sItem;
grid.ScrollIntoView(sItem);
// doesn't work
grid.SelectedItem = sItem;
grid.Focus();
grid.CurrentColumn = grid.Columns[0];
grid.UpdateLayout();
grid.ScrollIntoView(sItem,grid.Columns[0]);
// doesn't work
grid.SelectedItem = sItem;
grid.UpdateLayout();
grid.ScrollIntoView(sItem);
问题是,当我从代码隐藏中选择一行时,选择不可见 - 它位于底部的某个位置。除非用户滚动,否则他们会觉得选择已经消失。我需要将DataGrid滚动到用户可以看到选择的位置。
我也试过“BringIntoView”,但没有运气。
答案 0 :(得分:40)
尝试:
grid.SelectedItem = sItem;
grid.UpdateLayout();
grid.ScrollIntoView(grid.SelectedItem);
答案 1 :(得分:6)
虚拟化堆栈面板没有项目容器,因为视图外部的项目不存在项目容器,这就是显示此错误的原因。禁用虚拟化目前解决了这个问题,并且已经将错误报告给了codeplex工具包项目。