2010-08-14 2 views
1

J'utilise un DataTemplate pour appliquer une vue à un ViewModel. J'ai un cas où quand une certaine chose se produit dans une instance de la vue (DataTemplate), je dois effectuer une action dans toutes les autres instances.Comment puis-je effectuer le suivi de toutes les instances d'un DataTemplate ou d'un contrôle dans un DataTemplate?

J'accomplis déjà cela en implémentant l'événement Initialized sur l'un des contrôles du DataTemplate et en utilisant cet événement pour ajouter une référence au contrôle à une liste dans le codebehind. Cela fonctionne, car il n'y a qu'un seul codebehind pour DataTemplate (dans un dictionnaire de ressources), ils peuvent tous accéder à la même liste.

Je suis un peu inquiet, car les instances de DataTemplate sont créées et détruites. Est-ce que je ne garde pas de références supplémentaires autour des anciennes instances du DataTemplate qui ne sont plus nécessaires? Y a-t-il un moyen de les nettoyer? Y a-t-il un événement correspondant ... le contraire de Initialized ... quand un contrôle ou DataTemplate est parti?

Répondre

0

Serait-il faisable pour vous de modéliser cette interaction directement dans le ViewModel? Peut-être avec une propriété ou un événement sur le (s) article (s) étant lié (s) aux données? De cette façon, votre vue n'a qu'à décider du comportement/de la présentation de l'événement.

+0

Je pensais à ça aussi, mais je suis juste en train de pousser le même problème sur le ViewModel. Ensuite, je dois suivre toutes les instances de ViewModel, ce qui est un peu la même chose. Mais je suis d'accord que ça pourrait être plus propre. –

Questions connexes