Votre objet hérite de DependencyObject, et vous pouvez le modifier
Dans ce cas, vous pouvez surcharger la méthode OnPropertyChanged et effectuez votre traitement si l’événement concerne la propriété en question. Rien de plus simple donc. Voici l’exemple :
1: protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
2: {
3: base.OnPropertyChanged(e);
4: if (e.Property.Name == MonDependencyObject.MaDependencyProperty.Name)
5: {
6: //Mon traitement particulier
7: }
8: }
9:
Dans d’autres cas vous ne pouvez cependant pas modifier l’objet en question ni même travaillé avec un objet en héritant. Il existe quand même une solution.
Si vous ne pouvez pas modifier son code
En fait il suffit d'obtenir l'objet DependencyPropertyDescriptor pour la DependencyProperty en question et d’ajouter un gestionnaire d’événements correspondant au changement de valeurs. Voici le petit bout de code en question:
1: DependencyPropertyDescriptor prop = DependencyPropertyDescriptor.FromProperty(
2: MonDependencyObject.MaDependencyProperty,
3: typeof(MonDependencyObject));
4:
5: prop.AddValueChanged(this, value_changed);
Et le gestionnaire d’événements en question :
1: public void value_changed(object sender, EventArgs e)
2: {
3: //Ma propriété a changé
4: }
C’est tout, pour le code !
Un exemple d’utilisation est la possibilité d’animer certains objets n’étant pas des DependencyObject via une petite astuce que nous verrons dans un futur article.
| < Précédent |
|---|





