14
votes

I tried the following, all of which fail on function ScrollIntoView and give a 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);

The problem is, when I select a row from code-behind, selection is not visible - it's somewhere down the bottom. Unless the user scrolls they feels that selection has vanished. I need to scroll a DataGrid to the point that user can see the selection.

I also tried "BringIntoView" as well but no luck.

2

2 Answers

48
votes

Try:

grid.SelectedItem = sItem; 
grid.UpdateLayout();
grid.ScrollIntoView(grid.SelectedItem);
6
votes

Virtualized Stack Panel didn't have an item container, because Item Container does not exist for the item outside the view and that's why this error was shown. Disabling virtualization resolves the issue for now, and the bug has been reported to codeplex toolkit project.