title: When does binding target get updated for complex paths?
body: <p>When using databinding in WPF, the target dependency object gets updated when it is notified that the source has changed through the <code>INotifyPropertyChanged</code> interface.</p>
  
  <p>For example: </p>
  
  <pre><code>&lt;TextBlock Text="{Binding Path=SomeField}"/&gt;
  </code></pre>
  
  <p>The text field will change to correctly reflect the value of SomeField whenever <code>PropertyChanged(this, new PropertyChangedEventArgs("SomeField"))</code> is called from the source.</p>
  
  <p>What if I use a complex path like the following:</p>
  
  <pre><code>&lt;TextBlock Text="{Binding Path=SomeObjField.AnotherField}"/&gt;
  </code></pre>
  
  <p>Will the text field get updated for <code>PropertyChanged(this, new PropertyChangedEventArgs("SomeObjField"))</code> on the source?</p>
  
  <p>What about <code>PropertyChanged(this, new PropertyChangedEventArgs("AnotherField"))</code> on the intermediate object (the object contained within the SomeObjField)?</p>
  
  <p>Source objects and fields are NOT dependency objects or properties! Assume that the property/classes are implemented something like the following:</p>
  
  <pre><code>public class Data : INotifyPropertyChanged
  {
     // INotifyPropertyChanged implementation...
  
     public string SomeField
     {
        get { return val; }
        set
        {
           val = value;
           // fire PropertyChanged()
        }
     }
  
     public SubData SomeObjField
     {
        get { return val; }
        set
        {
           val = value;
           // fire PropertyChanged()
        }
     }   
  }
  
  public class SubData : INotifyPropertyChanged
  {
     // INotifyPropertyChanged implementation...
  
     public string AnotherField
     {
        get { return val; }
        set
        {
           val = value;
           // fire PropertyChanged()
        }
     }
  }
  </code></pre>