title: Why does an empty ReactiveCommand.CreateAsyncObservable() corrupt my Xamarin.Forms ListView, but simple ICommand works?
body: <p>I have a very simple setup: A <code>ContentPage</code> has a <code>ListView</code> as it's only content. The list supports pull to refresh. It is binding to a command:</p>
  
  <pre><code>listView.SetBinding&lt;MyViewModel&gt;(ListView.RefreshCommandProperty, vm =&gt; vm.RefreshCommand);
  listView.SetBinding&lt;MyPageViewModel&gt;(ListView.IsRefreshingProperty, vm =&gt; vm.IsRefreshing);
  </code></pre>
  
  <p>The list is empty and binds to an empty collection.</p>
  
  <p>The refresh command is:</p>
  
  <pre><code>public ICommand LoadNodesCommand { get; set; }
  </code></pre>
  
  <p>If I use</p>
  
  <pre><code>LoadNodesCommand = new Command(o =&gt; {
    IsRefreshing = true;
    IsRefreshing = false;
  });
  </code></pre>
  
  <p>the list refreshes if I pull and all is fine. Notice that I do not modify the list's data. It's an empty dummy command.</p>
  
  <p>Next I use this as my command instead:</p>
  
  <pre><code>LoadNodesCommand = ReactiveCommand.CreateAsyncObservable(x =&gt;
  {
    IsRefreshing = true;
    IsRefreshing = false;
  
    return System.Reactive.Linq.Observable.Empty&lt;IEnumerable&lt;Item&gt;&gt;();
  }
  </code></pre>
  
  <p>Again, an empty dummy command. But this one makes the ListView behave very strangely. After the pull-to-refresh, it scrolls a bit. After each refresh it scrolls further. I do not use any other Rx methods (I'm not subscribing to the observable). Here's a screenshot of the list after three refreshes. Its first cell has been moved towards the bottom of the screen.</p>
  
  <p>It really <em>should not</em> affect ListView...I'm not touching it, nor its data. I also tried using <code>Device.BeginInvokeMainThread()</code> to set the <code>IsRereshing = false</code>.</p>
  
  <p><img src="https://i.stack.imgur.com/ukq1W.png" alt="enter image description here"></p>