/// <summary> /// Lazy loading of items /// </summary> private void ItemsDataGrid_ScrollChanged(object sender, ScrollChangedEventArgs e) { ScrollViewer scrollViewer = (ScrollViewer)e.OriginalSource; if (ChangeVerticalOffset) { scrollViewer.ScrollToVerticalOffset(PreviousScrollVerticalOffset); ChangeVerticalOffset = false; } else { PreviousScrollVerticalOffset = e.VerticalOffset; // Trigger when the scrollbar is at the end if (e.VerticalOffset == scrollViewer.ScrollableHeight && e.VerticalOffset != 0 && !IsScrollAlreadyAtTheEnd) { ItemsDataGrid.ItemsSource = EncycloDB.LoadNewItems(); if (ActualSortedColumnIndex != 0) { ItemsDataGrid.Columns[ActualSortedColumnIndex].SortDirection = ActualSortDirection; } IsScrollAlreadyAtTheEnd = true; ChangeVerticalOffset = true; } else { IsScrollAlreadyAtTheEnd = false; } } }