title: Lots of unexpected "Cannot retrieve value using the binding" errors
body: <p>When debugging my wpf project I see a lot of binding errors logged in the output window like this one:</p>
  
  <blockquote>
    <p>System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=AreRowDetailsFrozen; DataItem=null; target element is 'DataGridDetailsPresenter' (Name=''); target property is 'SelectiveScrollingOrientation' (type 'SelectiveScrollingOrientation')</p>
  </blockquote>
  
  <p>I googled a lot about this kind of message and tried to fix all <strong>my</strong> bindings, but the errors keep occuring for properties I never even heard about.</p>
  
  <p>So I broke this down to a basic example:</p>
  
  <p>xaml:</p>
  
  <pre><code>&lt;StackPanel&gt;
      &lt;DataGrid ItemsSource="{Binding Items}" x:Name="_grid" CanUserAddRows="False"&gt;
          &lt;DataGrid.Columns&gt;
              &lt;DataGridTextColumn Header="ID" Binding="{Binding ID, FallbackValue=0}"/&gt;
              &lt;DataGridTextColumn Header="Text" Binding="{Binding Text, FallbackValue={x:Null}}"/&gt;
          &lt;/DataGrid.Columns&gt;
      &lt;/DataGrid&gt;
      &lt;Button Click="Button_OnClick"&gt;Reset&lt;/Button&gt;
  &lt;/StackPanel&gt;
  </code></pre>
  
  <p>Code behind:</p>
  
  <pre><code>public partial class MainWindow
  {
      public ObservableCollection&lt;TestItem&gt; Items { get; } = new ObservableCollection&lt;TestItem&gt;();    
      public MainWindow()
      {
          Items.Add(new TestItem { ID = 1, Text = "One" });
          Items.Add(new TestItem { ID = 2, Text = "Two" });
          InitializeComponent();
      }
      private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
      {
          _grid.ItemsSource = null;
          _grid.ItemsSource = Items;
      }
  }
  
  public class TestItem
  {
      public int ID { get; set; }
      public string Text { get; set; }
  }
  </code></pre>
  
  <p>The two elements are displayed correctly in the <code>DataGrid</code>.</p>
  
  <p>Now whenever I click the button (and reassign the <code>ItemSource</code>) I see these 12 messages in the output window:</p>
  
  <pre><code>System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=AreRowDetailsFrozen; DataItem=null; target element is 'DataGridDetailsPresenter' (Name=''); target property is 'SelectiveScrollingOrientation' (type 'SelectiveScrollingOrientation')
  System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=HeadersVisibility; DataItem=null; target element is 'DataGridRowHeader' (Name=''); target property is 'Visibility' (type 'Visibility')
  System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=ID; DataItem=null; target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
  System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=Text; DataItem=null; target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
  System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=ValidationErrorTemplate; DataItem=null; target element is 'Control' (Name=''); target property is 'Template' (type 'ControlTemplate')
  System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=(0); DataItem=null; target element is 'Control' (Name=''); target property is 'Visibility' (type 'Visibility')
  System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=AreRowDetailsFrozen; DataItem=null; target element is 'DataGridDetailsPresenter' (Name=''); target property is 'SelectiveScrollingOrientation' (type 'SelectiveScrollingOrientation')
  System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=HeadersVisibility; DataItem=null; target element is 'DataGridRowHeader' (Name=''); target property is 'Visibility' (type 'Visibility')
  System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=ID; DataItem=null; target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
  System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=Text; DataItem=null; target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
  System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=ValidationErrorTemplate; DataItem=null; target element is 'Control' (Name=''); target property is 'Template' (type 'ControlTemplate')
  System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=(0); DataItem=null; target element is 'Control' (Name=''); target property is 'Visibility' (type 'Visibility')
  </code></pre>
  
  <p>I checked that the errors appear when setting <code>ItemSource</code> back to <code>Items</code>, not when setting to <code>null</code>. And the number of error messages depends on the number of items in the collection.</p>
  
  <p>I am concerned that these "binding errors" will slow down my real application (where I may have >50k elements in the collection) and therefor <strong>want to understand why they appear and how I can avoid them</strong>.</p>
  
  <p>As you can see I already added fallback values to my bindings, but the errors keep appearing for properties I didn't bind at all.</p>