title: IDataErrorInfo does not fire when binding to a complex object
body: <p>I have a simple dialog that contains edit boxes such as this:</p>
  
  <pre><code>&lt;TextBox Text="{Binding Path=EmailSettings.SmtpServer, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnDataErrors=True, UpdateSourceTrigger=LostFocus}" /&gt;
  </code></pre>
  
  <p>The dialog uses a Model as its data context (to simplify the model example INotifyPropertyChanged has not been shown nor is the code that creates the model and
  sets the dialog data context to the model instance):</p>
  
  <pre><code>class EmailSettingsModel : IDataErrorInfo
  {
     public EmailSettingsModel ()
     {
        EmailSettings = new EmailSettings();
     }
  
     public EmailSettings EmailSettings
     { get; set; }
  
      string _error;
      public string Error
      {
          get { return _error; }
          set { _error = value; }
      }
  
      public string this[string propertyName]
      {
          get
          {
              string errorMessage = null;
  
              if ( string.Compare( propertyName, "EmailSettings.SmtpServer" ) == 0 )
              {
                  if ( !string.IsNullOrWhiteSpace( EmailSettings.SmtpServer ) )
                      errorMessage = "SMTP server is not valid";
              }
  
              Error = errorMessage;
           }
       }
  }
  </code></pre>
  
  <p>The model contains a property that is a simple POCO class that has several properties on it.</p>
  
  <pre><code>class EmailSettings
  {
     public string SmtpServer
     { get; set; } 
  }
  </code></pre>
  
  <p>I could not get the IDataErrorInfo indexer to fire and spent hours looking. When I changed the binding on the text box to use a simple property:</p>
  
  <pre><code>&lt;TextBox Text="{Binding Path=SmtpServer, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnDataErrors=True, UpdateSourceTrigger=LostFocus}" /&gt;
  </code></pre>
  
  <p>on the Model as below the IDataErrorInfo indexer fired.</p>
  
  <pre><code>class EmailSettingsModel
  {
     public string SmtpServer
     { get; set; } 
  }
  </code></pre>
  
  <p>Was IDataErrorInfo not called because I used a compound property for the binding statement. I have used complex properties like this for normal data binding and they work but for this example IDataErrorInfo was not called. </p>