j'ai une classe appelée DataStore
et une liste des Department
s (un ObservableCollection
), et chaque ministère a de nouveau une liste de Product
s. Les propriétés de la classe Product
modifiées affectent également les propriétés des classes Department
et DataStore
. Comment chaque Product
notifier le Department
auquel il appartient, et le DataStore
(qui est la classe mère de tous) qu'une ou plusieurs de ses propriétés ont changé leurs valeurs? Exemple: un produit a la propriété NumberSoldToday et est lié. Le Ministère a une propriété appelée TotalNumberOfProductsSold:Firing événement PropertyChanged dans un type complexe, niché dans WPF
public int TotalNumberOfProductsSold
{
get
{
int result = 0;
foreach(Product p in this.products)
result += p.NumberSoldToday;
return result;
}
}
Et le magasin de données a une TotalProductsSold de propriété (pour tous les départements):
public int TotalProductsSold
{
get
{
int result = 0;
foreach(Product p in this.deparments)
result += p.TotalNumberOfProductsSold;
return result;
}
}
Si toutes ces propriétés sont liées, et les changements de propriété les plus intimes, il doit en quelque sorte notifier que la valeur des deux autres a également changé. Comment? La seule façon dont je peux voir cela se produire est de raccorder l'événement PropertyChanged dans chaque classe. L'événement Th doit également déclencher lors de la suppression, en ajoutant à la collection de produits et de départements, respectivement.
Existe-t-il une meilleure façon de faire cela?
Je vois. Pour en revenir à mon exemple ci-dessus, disons que je m'abonne à l'événement CollectionChanged dans le département. Cet événement est-il déclenché lorsqu'une propriété de l'un des éléments de la collection (= Produit) change? Cet événement n'est pas seulement pour ajouter/supprimer/déplacer? – John
@John - CollectionChanged ne se déclenche pas lorsqu'un objet contenu dans la collection a une de ses propriétés modifiée. Pour ce faire, vous devez vous abonner à leurs événements PropertyChanged individuels. Vous pouvez connecter ces événements lorsque des éléments sont ajoutés ou supprimés de la collection. – jpierson