/// <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; } } } } }