I have created a project in UWP, that has GridView:
<GridView x:Name="gvItems"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.HorizontalScrollMode="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
ScrollViewer.VerticalScrollMode="Enabled"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
ItemTemplate="{StaticResource Template}">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Horizontal"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
The problem is that when I want to scroll into some item I can't because ScrollViewer is not aware of it:
var scrollViewer = gvItems.GetFirstDescendantOfType<ScrollViewer>();
if (scrollViewer == null)
{
return;
}
GridViewItem selectedVisual = gvItems.ContainerFromItem(selected) as GridViewItem;
if (selectedVisual == null)
{
return;
}
scrollViewer.ChangeView(0, scrollViewer.VerticalOffset + (scrollViewer.ViewportHeight / 2), null);
If item is outside of virtualizing list selectedVisual will be NULL always.
Does anyone know how to scroll into items that are not yet being "initialized" in the virtualized list?
And this got nothing to do with "scrolling to the items in the middle of a listview", the problem is that listview is not aware of item and it's not scrolling at all.