title: Reorder Observable Collection Binding in WinUI
body: <p>I have a few issues with binding an <strong>ObservableCollection</strong> using <strong>WinUI 3</strong>:</p>
  <p><strong>(a)</strong> When the collection changes (an item is added, removed), the ListView is not updated.</p>
  <p><strong>(b)</strong> Upon reordering the ListView (using the control itself), the ListView does not keep the new order.</p>
  <p><strong>Class Definitions</strong></p>
  <pre><code>using System.Collections.ObjectModel;
  using System.ComponentModel;
  using System.Xml.Linq;
  
  public class Standards 
  {
     public event PropertyChangedEventHandler PropertyChanged;
     private void NotifyPropertyChanged(string propertyName)
     {
      PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
     }
  
  private ObservableCollection&lt;Standard&gt; _Collection;
  
  public ObservableCollection&lt;Standard&gt; Collection {
      get =&gt; _Collection; 
      set { if (_Collection != value) { _Collection = value; 
          NotifyPropertyChanged(&quot;Description&quot;); } } 
      }
  }
  public class Standard : INotifyPropertyChanged
   {
          public event PropertyChangedEventHandler PropertyChanged;
          private void NotifyPropertyChanged(string propertyName)
          {
              PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
          }
          public Standard() { }
          public Standard(XElement e)
          {
              Name = e.Attribute(&quot;name&quot;).Value;
              Description = e.Attribute(&quot;description&quot;).Value;
          }
          public Standard(string standard, string description)
          {
              Name = standard;
              Description = description;
          }
          private string _Description;
          private string _name;
          public string Name { get =&gt; _name;  set { if (_name != value){ _name = value; NotifyPropertyChanged(&quot;Name&quot;); } } 
     }
          
          public string Description { get =&gt; _Description; set { if (_Description != value) { _name = value; NotifyPropertyChanged(&quot;Description&quot;); } } }
   }
  </code></pre>
  <p><strong>WinUI XAML</strong></p>
  <pre><code>&lt;ListView x:Name=&quot;lvStandards&quot;
   Grid.Row=&quot;2&quot;
   Margin=&quot;5&quot; 
   CanReorderItems=&quot;True&quot;
   ReorderMode=&quot;Enabled&quot;
   AllowDrop=&quot;True&quot;
   ItemsSource=&quot;{x:Bind viewModel.Standards.Collection, Mode=TwoWay}&quot;/&gt;
  </code></pre>