1

J'ai une ObservableCollection qui est manipulée par un couple de classes. Je veux savoir quelle classe a déclenché l'événement. J'ai déjà regardé l'objet expéditeur et parcouru les propriétés de NotifyCollectionChangedEventArgs mais je n'ai rien trouvé. Je reçois seulement la raison de l'événement tel que: Réinitialiser, ajouter ou supprimer. Ce que je cherche, c'est l'auteur.Quelle classe a déclenché l'événement CollectionChanged?

private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e){ 
    // if coming from one class do something 

    // else if coming from another class do something else 
} 

Le but de cela est que je dois ma collection à se comporter d'une manière différente en fonction de la classe qui a modifié.

+4

Vous ne pouvez pas faire cela. – SLaks

+1

* Pourquoi * voulez-vous qu'il se comporte différemment? Il y a probablement une meilleure façon d'accomplir ce que vous voulez. –

+1

Et ... [C'est ce que nous appelons le problème XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –

Répondre

2

C'est impossible. Si vous avez vraiment besoin de faire cela, vous pouvez changer le type d'objets que vous mettez dans la collection pour ajouter une sorte de propriété "owner", indiquant qui les a créés.

+0

Ouais j'ai déjà pensé à cela, mais je vais J'ai dû refactoriser mon code un peu, c'était plus un espoir qu'il y aurait un moyen. J'étais sceptique depuis le début. –