title: ISupportIncrementalLoading only fires once
body: <p>I'm trying to create a Win8 Metro reference app for virtualized lists.  In doing some (very sparse) reading, I've found that the recommended way of supporting this is through the <code>ISupportIncrementalLoading</code> interface.</p>
  
  <p>I'm having a problem with my reference app, where the <code>LoadMoreItemsAsync</code> method is called once, but isn't called again, even though my <code>HasmoreItems</code> property is hard coded to return True.</p>
  
  <p>What the code below should do is load 40 items, then load 'x' number at a time afterwards.  What happens is that it loads the first 40 items, then is prompted to load 42 more, then is never asked to load again.</p>
  
  <p>Here's the relevant portions of my code:</p>
  
  <p>XAML</p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;Grid Background="{StaticResource ApplicationPageBackgroundBrush}"&gt;
      &lt;ListView ItemsSource="{Binding Items}" Width="800" HorizontalAlignment="Left" Margin="12"&gt;
          &lt;ListView.ItemTemplate&gt;
              &lt;DataTemplate&gt;
                  &lt;TextBlock Text="{Binding Title}" Foreground="White"/&gt;
              &lt;/DataTemplate&gt;
          &lt;/ListView.ItemTemplate&gt;
      &lt;/ListView&gt;
  
  &lt;/Grid&gt;
  </code></pre>
  
  <p>ViewModel and Support Classes:</p>
  
  <pre class="lang-cs prettyprint-override"><code>public class MainViewModel : ViewModelBase
  {
  
      public MyIncrementalCollection Items { get; set; }
  
      public MainViewModel()
      {
  
          Items = new MyIncrementalCollection();
  
  
  
          for (int i = 0; i &lt; 40; i++)
          {
              Items.Add(new MyData {Title = string.Format("Item: {0}", i)});
          }
      }
  }
  
  public class MyData
  {
      public string Title { get; set; }
  }
  
  public class MyIncrementalCollection : ObservableCollection&lt;MyData&gt;, ISupportIncrementalLoading
  {
      public bool HasMoreItems
      {
          get
          {
              return true;
          }
      }
  
      public IAsyncOperation&lt;LoadMoreItemsResult&gt; LoadMoreItemsAsync(uint count)
      {
          return
              (IAsyncOperation&lt;LoadMoreItemsResult&gt;)
              AsyncInfo.Run((System.Threading.CancellationToken ct) =&gt; LoadDataAsync(count));
      }
  
      private async Task&lt;LoadMoreItemsResult&gt; LoadDataAsync(uint count)
      {
  
          for (int i = 0; i &lt; count; i++)
          {
              this.Add(new MyData { Title = string.Format("Item: {0}, {1}", i, System.DateTime.Now) });
          }
  
          var ret = new LoadMoreItemsResult {Count = count};
  
          return ret;
      }
  
  
  }
  </code></pre>
  
  <p>}</p>