2013-08-05 3 views
0

У меня есть свойство в классе (например, ParentClass) в C#, которое является связующим с ObservableCollection другого класса. Тип (например, ChildClass). Мой вопрос в том, как изменить стоимость ChildClass собственности путем использования свойства ParentClass что RaisePropertyChanged("ParentProperty") должно быть запущено?Изменение родительской собственности ребенка в C#

Я использую это кодирование:

foreach (var pIn in ParentProperty.Where(ms => ms.Name == onNameUpdateObj.Name && ms.UnRead == true)) 
{ 
    if (pIn != null) 
    { 
     pIn.UnRead = false; 
    } 
} 

ParentProperty является собственностью связывания с ObservableCollection<ChildClass> и ChildClass содержит свойство UnRead. Когда я меняю значение UnReadRaisePropertyChanged("ParentProperty") возвращает null. Я хочу, чтобы RaisePropertyChanged("ParentProperty") запускался каждый раз, когда я меняю значение свойства pIn.UnRead.

+0

Если ChildClass реализует INotifyPropertyChanged специально для свойства UnRead, тогда у вас не должно быть проблем, отправьте код UnRead + класс defenition – makc

ответ

0

ObservableCollection<T> не содержит уведомлений о том, когда один или несколько properties коллекции, которую он поддерживает, он предоставляет только уведомления для when items get added, removed, or when the whole list is refreshed.

Если вы хотите узнать, когда в вашей коллекции меняются property, вам необходимо внедрить уведомление для этого самостоятельно. Такой механизм может быть реализован с помощью INotifyPropertyChanged и/или EventHandler.

+0

Большое спасибо ....! Не могли бы вы рассказать мне, как обновить весь список? –

+0

@SunnySingh - Я не делал 'Refresh()' on и 'ObservableCollection ' перед собой, однако быстрый и грязный 'Google' предлагает:' CollectionViewSource.GetDefaultView (parentClass.ChildClasses) .Refresh(); ' **может работать. Я бы посоветовал вам это и переосмыслить то, что вы пытаетесь достичь. –

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