title: Scrollviewer ChangeView function not scrolling to bottom
body: <p>I have used listview inside scrollviewer in windows phone 8.1 rt app.
  I have a requirement of scrolling to bottom of list but change view function is not working as per requirement.</p>
  
  <p>Created a sample for same scenario:</p>
  
  <p>MainPage.xaml</p>
  
  <pre><code>&lt;Page
  x:Class="InfiList.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="using:InfiList"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  xmlns:customlv="using:InfiList"
  mc:Ignorable="d"
  Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"&gt;
  &lt;Page.Resources&gt;
      &lt;Style x:Key="ListViewStyle1" TargetType="ListView"&gt;
          &lt;Setter Property="IsTabStop" Value="False"/&gt;
          &lt;Setter Property="TabNavigation" Value="Once"/&gt;
          &lt;Setter Property="IsSwipeEnabled" Value="True"/&gt;
          &lt;Setter Property="HorizontalContentAlignment" Value="Stretch"/&gt;
          &lt;Setter Property="VerticalContentAlignment" Value="Top"/&gt;
          &lt;Setter Property="ItemContainerTransitions"&gt;
              &lt;Setter.Value&gt;
                  &lt;TransitionCollection&gt;
                      &lt;AddDeleteThemeTransition/&gt;
                      &lt;ReorderThemeTransition/&gt;
                  &lt;/TransitionCollection&gt;
              &lt;/Setter.Value&gt;
          &lt;/Setter&gt;
          &lt;Setter Property="ItemsPanel"&gt;
              &lt;Setter.Value&gt;
                  &lt;ItemsPanelTemplate&gt;
                      &lt;ItemsStackPanel Orientation="Vertical"/&gt;
                  &lt;/ItemsPanelTemplate&gt;
              &lt;/Setter.Value&gt;
          &lt;/Setter&gt;
          &lt;Setter Property="Template"&gt;
              &lt;Setter.Value&gt;
                  &lt;ControlTemplate TargetType="ListView"&gt;
                      &lt;Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"&gt;
                          &lt;ItemsPresenter FooterTransitions="{TemplateBinding FooterTransitions}" FooterTemplate="{TemplateBinding FooterTemplate}" Footer="{TemplateBinding Footer}" HeaderTemplate="{TemplateBinding HeaderTemplate}" Header="{TemplateBinding Header}" HeaderTransitions="{TemplateBinding HeaderTransitions}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/&gt;
                      &lt;/Border&gt;
                  &lt;/ControlTemplate&gt;
              &lt;/Setter.Value&gt;
          &lt;/Setter&gt;
      &lt;/Style&gt;
  &lt;/Page.Resources&gt;
  
  &lt;Grid x:Name="root"&gt;
      &lt;ScrollViewer x:Name="MyScrollViewer" ViewChanged="OnViewChanged" IsVerticalScrollChainingEnabled="True"&gt;
          &lt;ListView x:Name="listview" ItemsSource="{Binding Collection}" Style="{StaticResource ListViewStyle1}" &gt;
              &lt;ListView.ItemContainerStyle&gt;
                  &lt;Style TargetType="ListViewItem"&gt;
                      &lt;Setter Property="HorizontalContentAlignment" Value="Stretch"/&gt;
                      &lt;Setter Property="VerticalContentAlignment" Value="Stretch"/&gt;
                  &lt;/Style&gt;
              &lt;/ListView.ItemContainerStyle&gt;
  
              &lt;ListView.ItemsPanel&gt;
                  &lt;ItemsPanelTemplate&gt;
                      &lt;ItemsStackPanel ItemsUpdatingScrollMode="KeepItemsInView"/&gt;
                  &lt;/ItemsPanelTemplate&gt;
              &lt;/ListView.ItemsPanel&gt;
              &lt;ListView.ItemTemplate&gt;
                  &lt;DataTemplate&gt;
                      &lt;Grid Background="LightGray" HorizontalAlignment="Left" Margin="25"&gt;
                          &lt;TextBlock Margin="25 25 25 50" FontSize="32" Text="{Binding}" TextWrapping="WrapWholeWords" MaxWidth="200"/&gt;
                      &lt;/Grid&gt;
  
                  &lt;/DataTemplate&gt;
              &lt;/ListView.ItemTemplate&gt;
          &lt;/ListView&gt;
      &lt;/ScrollViewer&gt;
  &lt;/Grid&gt;
  &lt;Page.BottomAppBar&gt;
      &lt;CommandBar&gt;
          &lt;AppBarButton Click="AppBarButton_Click"&gt;
  
          &lt;/AppBarButton&gt;
      &lt;/CommandBar&gt;
  &lt;/Page.BottomAppBar&gt;
  </code></pre>
  
  <p></p>
  
  <p>MainPage.xaml.cs</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Collections.ObjectModel;
  using System.Diagnostics;
  using System.IO;
  using System.Linq;
  using System.Runtime.InteropServices.WindowsRuntime;
  using Windows.Foundation;
  using Windows.Foundation.Collections;
  using Windows.UI.Xaml;
  using Windows.UI.Xaml.Controls;
  using Windows.UI.Xaml.Controls.Primitives;
  using Windows.UI.Xaml.Data;
  using Windows.UI.Xaml.Input;
  using Windows.UI.Xaml.Media;
  using Windows.UI.Xaml.Navigation;
  
  // The Blank Page item template is documented at    http://go.microsoft.com/fwlink/?LinkId=391641
  
  namespace InfiList
  {
  /// &lt;summary&gt;
  /// An empty page that can be used on its own or navigated to within a Frame.
  /// &lt;/summary&gt;
  public sealed partial class MainPage : Page
  {
  
      public ObservableCollection&lt;String&gt; Collection { get; set; }
  
      private bool incall;
      private int offset;
      int _noofelements;
  
      public MainPage()
      {
          this.InitializeComponent();
          Collection = new ObservableCollection&lt;string&gt;();
          listview.DataContext = this;
  
  
          this.NavigationCacheMode = NavigationCacheMode.Required;
  
          addNumber(0);
          listview.Loaded += listview_Loaded;
      }
  
      void listview_Loaded(object sender, RoutedEventArgs e)
      {
          MyScrollViewer.ChangeView(null, int.MaxValue, null, true);
  
      }
  
      private void OnViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
      {
          ScrollViewer view = (ScrollViewer)sender;
          Debug.WriteLine("Vertica Pffset: " + view.VerticalOffset);
  
          if ((view.VerticalOffset &lt; 0.1 * view.ScrollableHeight) &amp; !incall)
          {
              incall = true;
              addNumber(++offset);
          }
      }
  
      private void addNumber(int offset)
      {
          int scrollcount = 30;
          int start = offset * scrollcount;
          for (int i = start; i &lt; start + scrollcount; i++)
          {
              string s= (_noofelements++).ToString() ;
              if (i % 2 == 0)
                  s += "msdkd kmsdksdk kdsmkd skmcds ckdsmckds ckdsmcksd kcmdskcdsc kdmmcsckdsc" + Environment.NewLine + "sdjndsjnds"
                      + "msdkd kmsdksdk kdsmkd skmcds ckdsmckds ckdsmcksd kcmdskcdsc kdmmcsckdsc" + Environment.NewLine + "sdjndsjnds"
                     + "dssdsddsds";
  
              Collection.Insert(0,s);
          }
  
          incall = false;
      }
  
      /// &lt;summary&gt;
      /// Scrolls to bottom
      /// &lt;/summary&gt;
      /// &lt;param name="sender"&gt;&lt;/param&gt;
      /// &lt;param name="e"&gt;&lt;/param&gt;
      private void AppBarButton_Click(object sender, RoutedEventArgs e)
      {
          MyScrollViewer.ChangeView(null, int.MaxValue, null, true);
          //MyScrollViewer.ScrollToVerticalOffset(int.MaxValue);
          //For scrolling till top
          //MyScrollViewer.ScrollToVerticalOffset(0);
      }
  }
  }
  </code></pre>
  
  <p>Is there any way to achieve desired functionality?</p>