/// <summary>
 /// Método acionado quando a propriedade de uma dos itens da coleção for alterada.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ItemPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
 {
     if (_comparerPropertiesContainer != null && _comparerPropertiesContainer.ContainsProperty(e.PropertyName))
     {
         var item        = (T)sender;
         var sourceIndex = _source.IndexOf(item);
         if (sourceIndex >= 0)
         {
             for (var i = 0; i < _indexes.Count; i++)
             {
                 if (_indexes[i] == sourceIndex)
                 {
                     if ((i > 0 && _comparer.Compare(item, _source[_indexes[i - 1]]) < 0) || (i < _indexes.Count && _comparer.Compare(item, _source[_indexes[i + 1]]) > 0))
                     {
                         CalculateIndexes();
                     }
                     break;
                 }
             }
         }
     }
 }