Citation:
1) Pour la gestion d'événement sur un custom control, disant que je dois manipuler l'événement KeyDown, quelle est la meilleur pratique s'abonner et se désabonner à cette event (+= et -= this.KeyDown) ou faire un override de OnKeydown) ?
D'une manière générale, un override de OnKeyDown est plus simple a utiliser car tu n'as pas a te soucier du désabonnement de l'evenement.
Citation:
2) Justement pour le désabonnement des événements faut-il implémenter IDisposable et se débarasser des abonnements la dedans ou par exemple dans l'événement Unloaded du control tous désabonner ?
Oui tu peux faire comme ça. Le problème n'est pas vraiment sur l' abonnement en lui même mais sur le moment ou il est effectué. En effet, un évenement auquel on s'est abonné qui ne se désabonne pas ne pourra être nettoyé par le GarbageCollector (MemoryLeaks). Dans une boucle, tu vois le problème...
Si tu restes sur un abonnement dans le Constructeur et Dispose tu n'auras jamais de problème.
http://www.simonferquel.net/blog/arc...moryleaks.aspx
Citation:
(d'ailleurs si quelqu'un sait pourquoi l'événement Unloaded est "Raised" a la création aussi)
Je ne le savais pas et je ne m'en suis jamais servi.
Citation:
3) Autre problème je suis en train de créer un Scheduler en faite, j'ai un control Event qui est en faite le visuel d'un événement dans le scheduler, ce control Event a une propriété Data du type EventData qui contient toute la partie donnée d'un événement et qui implémente INotifyPropertyChanged.
EventData contient plusieurs propriétés dans un premiers temps quelle est le moyen le plus propre de m'abonner au changement de ses propriétés dans Event ?
En faisant du Binding sur EventData, si j'ai bien compris.
Citation:
EventData contient aussi une propriété un peu plus complexe qu'on va appeler "Objet" qui a elle même des propriétés et qui implémente INotifyPropertyChanged, la encore quelle est le meilleur moyen d'informer Event d'une modification d'une propriété de "Objet" donc :
Event -> EventData -> Objet -> Property1
j'aimerais que Event soit notifié du changement de Property1
En faisant du Binding de EventData.Objet.Property1