2009-01-23 7 views
1

I ont une hiérarchie d'objets (les objets A, B), dont chacun met en oeuvre de telle sorte que INotifyPropertyChanged ...Comment améliorer les événements PropertyChanged?

A comporte un élément de type B, B comporte un élément de C, C est de type bool

Lorsque C est modifié, son événement PropertyChanged est déclenché, mais la propriété de B ne change pas d'événement. Et donc A ne réagit pas au changement de B.

Y a-t-il un bon moyen de faire exploser ça?

Répondre

0

C'est génial - je dois passer plus de temps à le regarder. Je vous remercie.

J'ai trouvé une solution différente, mais c'est un peu un hack. Je viens de définir ma propriété de chemin de liaison au type imbriqué. En utilisant mon exemple ci-dessus, dans mon XAML (qui a un DataContext de l'objet A) Je tournai ma ... Fixation

{Binding Path =} av. J.-C.

barboter le haut de l'événement est certainement plus élégant.

0

Cette solution est assez simpliste, mais ne pouvez-vous pas simplement vous abonner à l'événement PropertyChanged et propager l'appel?

E.G.

MyContainedObject.PropertyChanged += PropertyChangedHandler; 

puis dans votre gestionnaire:

private void PropertyChangedHandler(object sender, PropertyChangedEventArgs e) 
{ 
    this.OnPropertyChanged(e.PropertyName); 
} 

Cela fonctionne très bien lorsque vos objets ont des propriétés avec le même nom. Si vous avez des propriétés avec des noms différents, vous devrez faire un peu plus de travail pour convertir entre les valeurs de propriété.

private void PropertyChangedHandler(object sender, PropertyChangedEventArgs e) 
{ 
    switch(e.PropertyName)  
    {   
    case "Property1": 
     this.OnPropertyChanged("ADifferentProperty1"); 
     break;     
    case "Property2":    
     this.OnPropertyChanged("ADifferentProperty2"); 
     break;     
    default:    
     this.OnPropertyChanged(e.PropertyName);   
     break;  
    } 
} 
Questions connexes