Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

Actualités

[WPF/Silverlight] Comment choisir entre INotifyPropertyChanged et DependencyProperty ?

Les DependencyProperty et l’interface INotifyPropertyChanged possède la même particularité: il s’agit de 2 mécanismes utilisés pour permettre à votre application de notifier l’interface graphique qu’une propriété a été modifiée.

Bien souvent, on peut se demander quelle technique il convient d’utiliser dans son développement. Il faut savoir qu’il n’y a pas de “véritable” réponse à ce genre de problèmatique, il s’agit plus d’un choix personnel Smile

Personnellement, je procède de la sorte: si la classe qui doit notifier l’interface graphique fait elle-même partie, d’une manière ou d’une autre, de l’IHM (par exemple, une propriété sur un custom control/user control), alors j’utilise une DependencyProperty. Dans le cas contraire, si ma classe est simplement utilisée pour représenter un objet métier, alors j’implémente l’interface INotifyPropertyChanged.

Un des points qui peut “justifier” ce choix, c’est que l’utilisation des DependencyProperty n’est possible qu’après avoir référencé WindowBase.dll (en WPF) ou System.Windows.dll (avec Silverlight). Certes, lorsque l’on travaille avec un seul projet, cela ne pose pas de problèmes mais dans le cas où l’on dispose d’une solution contenant divers projets (dont un pour vos objets métier), on peut-être tenté de minimiser au maximum les dépendances.

Et vous, quelle méthodologie employez-vous pour cette problématique ?

 

A+

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mercredi 26 novembre 2008 10:49 par Thomas LEBRUN
Classé sous : , ,

Commentaires

RaptorXP a dit :

Personellement, je n'aime pas INotifyPropertyChanged parcequ'il oblige à écrire le nom de la propriété sous la forme d'une string. Si on renomme la propriété avec la fonction "Refactor" de VS, le code ne fonctionne plus si on oublie de changer aussi la string.

Et si le projet n'a vraiment aucun rapport avec de l'UI (donc aucune raison d'avoir une référence à WindowsBase), je crée juste un évènement fortement typé par propriété (NameChanged, PriceChanged par exemple).

# novembre 26, 2008 11:31

NeuroCypher a dit :

pas mieux.

# novembre 26, 2008 11:32

Thomas LEBRUN a dit :

Je suis d'accord avec le fait qu'écrire la nom de la propriété sous forme de chaîne de caractères, c'est pas le mieux c'est pourquoi je vous conseille de jeter un oeil ici: http://codingly.com/2008/09/30/inotifypropertychanged-sans-les-strings-ca-vous-dit/ ou du coté AOP: http://codingly.com/2008/10/29/utiliser-laop-avec-postsharp-pour-implementer-inotifypropertychanged/

# novembre 26, 2008 11:39

simon ferquel a dit :

Petit truc à prendre en compte : DependencyObject n'est pas ThreadSafe, et les DependencyProperties ne peuvent pas être modifiées en dehors du thread de création de l'objet. Ca peut poser des problèmes lorsque l'on fait de la validation de graphes d'objets complexes par exemple, ou implémenter du parrallèlisme consommant ces objets.

# novembre 26, 2008 14:37

Fabrice a dit :

Au début, j'utilisais les DependencyProperties, car ça me semblait être LA solution apportée par Microsoft pour gérer automatiquement un tas de choses qu'on doit réimplémenter sans. Malheureusement, j'ai été déçu par les DependencyProperties et je me rabat maintenant sur INotifyPropertyChanged.

Un des problèmes majeur est qu'en Silverlight, il n'y pas le support... des notifications des changements sur DependencyProperty ! Ca aide pas pour avoir du code partagé entre Silverlight et WPF (les modèles de présentations notamment).

# janvier 30, 2009 23:20
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- TechDays Paris 2012 : Session pleinière jour 3 par Blog Technique de Romelard Fabrice le il y a 21 heures et 20 minutes

- Mishra Reader : un lecteur RSS très Zune Style en Open Source ! par Cyril Sansus le il y a 23 heures et 54 minutes

- [framework 4] Les Tasks et le Thread UI par Fathi Bellahcene le 02-09-2012, 00:33

- Workflow Foundation 3 a un pied dans la tombe par Blog de Jérémy Jeanson le 02-08-2012, 22:15

- TechDays Paris 2012 : Nouvelles tendances du poste de travail - Bring Your own PC par Blog Technique de Romelard Fabrice le 02-08-2012, 19:42

- TechDays Paris 2012 : System Center Service Manager 2012 Vue d’ensemble par Blog Technique de Romelard Fabrice le 02-08-2012, 17:32

- TechDays Paris 2012 : Pleinière second jour par Blog Technique de Romelard Fabrice le 02-08-2012, 16:23

- TechDays Paris 2012 : Retour d'expérience sur la mise en place d'un Cloud Privé par Blog Technique de Romelard Fabrice le 02-08-2012, 16:04

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le 02-07-2012, 23:59

- Perspective 3.0 pour Silverlight 5.0 par Perspective le 02-07-2012, 22:39