title: An update to my ObservableCollection doesn't reflect in datagrid
body: <p>I made a simple example playing with MVVM. I have a simple class Person in Models, then a class PersonsViewModel has a list of Person. I'm doing so by install Prism through Nuget and raise the event PropertyChanged in the collection of people.</p>
  <pre><code>        private ObservableCollection&lt;Person&gt; people;
  
          public ObservableCollection&lt;Person&gt; People
          {
              get { return people; }
              set
              {
                  people = value;
                  this.RaisePropertyChanged(&quot;People&quot;);
              }
          }
  </code></pre>
  <p>then I bind it to a datagrid</p>
  <pre><code>        &lt;DataGrid Grid.Row=&quot;1&quot; x:Name=&quot;dataGrid&quot; AutoGenerateColumns=&quot;False&quot; ItemsSource=&quot;{Binding People}&quot; &gt;
              &lt;DataGrid.Columns&gt;
                  &lt;DataGridTextColumn Header=&quot;First Name&quot; Binding=&quot;{Binding FirstName, Mode=OneWay}&quot;/&gt;
                  &lt;DataGridTextColumn Header=&quot;Last Name&quot; Binding=&quot;{Binding LastName, Mode=OneWay}&quot;/&gt;
                  &lt;!--&lt;DataGridTextColumn Header=&quot;Sex&quot; Binding=&quot;{Binding Sex, Mode=TwoWay}&quot;/&gt;--&gt;
                  &lt;DataGridComboBoxColumn Header=&quot;Sex&quot; SelectedItemBinding=&quot;{Binding Sex, Converter={StaticResource sexTypeConverter}}&quot; ItemsSource=&quot;{Binding Source={StaticResource sexType}}&quot;/&gt;
                  &lt;DataGridTextColumn Header=&quot;Score&quot; Binding=&quot;{Binding Score, Mode=TwoWay}&quot;/&gt;
              &lt;/DataGrid.Columns&gt;
          &lt;/DataGrid&gt;
  </code></pre>
  <p>it works find so far, i can insert or remove line, change the quantity in the UI and reflect to the viewmodel.
  But the problem is that if I change the quantity in the code, it won't show in the form until I double click into it.
  here is the screenshot when my app starts, i've added three records with different scores.
  <a href="https://i.stack.imgur.com/LI7bq.png" rel="nofollow noreferrer">enter image description here</a></p>
  <p>in my code, I've put a command as below, so basically everytime I run the command it will increase the score by 20 for each person. Which it does. the problem is that after I click the button, the score on the form doesn't change, only when i double click into the field score, I can see the number is actually changed.</p>
  <pre><code>        private void IncQty()
          {
              foreach (Person item in this.People)
              {
                  item.Score += 20;
              }
          }
  </code></pre>
  <p>I've tried to search online, some say that I should bind the datasource again. But isn't ObservableCollection already implements the INotifyPropertyChanged and my view should talk to my viewmodel everytime something is changed?
  Also ideally I shouldn't do anything in my ViewModel to manipulate the element in View, it seems to break this rule if I write some code to attach the bind again in viewmodel.
  Please help. Thanks a lot.</p>