title: DataGrid only update rows that are shown
body: <p>I have a DataGrid that contains a few Name - Value Pairs, the said Name - Value Pairs are polled from a hardware device. To increase Performance (of the Polling loop not of the UI) I want to know which Items of the Binding are shown.</p>
  
  <pre><code>&lt;DataGrid Grid.Row="1" ItemsSource="{Binding ParameterViewSource.View}" 
   AutoGenerateColumns="False" CanUserReorderColumns="False"/&gt;
  </code></pre>
  
  <p>The DataGrid does now Virtualize the Rows by default. But for my background polling loop I want to know which Items of my CollectionViewSource currently are inside a RowPresenter.</p>
  
  <p>The approach should be realizable in MVVM.</p>
  
  <p>I tried to use the DataGridRowsPresenter - and the Children (or more specific there DataContext), but I am unable to get notified about changes. Is there any easy way to a achieve what I want.</p>
  
  <pre><code>private static void GridOnLoaded(object sender, RoutedEventArgs routedEventArgs)
          {
              DataGrid grid = (DataGrid)sender;
              var rowPresenter = grid.FindChildRecursive&lt;DataGridRowsPresenter&gt;();
  
              var items = rowPresenter.Children.OfType&lt;DataGridRow&gt;()
              .Select(x =&gt; x.DataContext);
              //Works but does not get notified about changes to the Children 
              //collection which occure if i resize the Grid, Collapse a 
              //Detail Row and so on
          }
  </code></pre>