2016-06-03 8 views
0

я определил наблюдаемую коллекцию, как показано ниже,PropertyEventChangedHandler из ObservableCollections не стрельбы

public class PropertyFieldsInExcel 
{ 
    public string LongNames { get; set; } 
    public string ShortNames { get; set; } 
    public string CNames { get; set; }        
} 

static ObservableCollection<PropertyFieldsInExcel> Properties = 
    new ObservableCollection<PropertyFieldsInExcel>(); 

У меня есть метод, который изменяет значение некоторых элементов в этом классе, как это так,

public static void AutofillCell() 
{    
    ((INotifyPropertyChanged)Properties).PropertyChanged += 
     new PropertyChangedEventHandler(PropertyChangedEvent);    

    Properties[i].CNames = "It works"; 
    Properties[i].CNames = "Ha ha ha";    

    ((INotifyPropertyChanged)Properties).PropertyChanged -= 
     new PropertyChangedEventHandler(PropertyChangedEvent); 
} 

Когда я присваиваю значение определенному элементу, как показано выше, событие не срабатывает. Зачем? Какую ошибку я совершил?

код обработчика событий, как это так,

private static void PropertyChangedEvent(object sender, PropertyChangedEventArgs e) 
{ 
    //Some code to be executed 
} 
+1

Возможная Дубликат [ObservableCollection не замечая, когда в нем товара меняется (даже с INotifyPropertyChanged)] (http://stackoverflow.com/ вопросы/1427471/observablecollection-not-noticing-when-item-in-it-changes-even-with-inotifyprop) –

+0

Вы не ищете событие CollectionChanged? – momar

+0

Нет, событие collectionChanged не будет срабатывать точно. Согласно MSDN, он срабатывает только при добавлении, удалении, замене или изменении всего объекта. Здесь я меняю свойство внутри объекта – Rama

ответ

1

Две проблемы:

1) PropertyFieldsInExcel не реализует INotifyPropertyChanged

2) ObservableCollection может сообщить вам, когда элементы меняются, но только после того, как вы вручную подписываетесь на измененное событие всех элементов.

Ссылка на комментарий от Uwe Keim дает EXELLENT объяснение с примерами ...

+0

Точка 1 помогла мне :) – Rama

 Смежные вопросы

  • Нет связанных вопросов^_^