Un peu d'histoire: Je suis en train de charger une interface utilisateur WPF à partir d'une base de données qui sont stockées dans une table de propriétés (type de contrôle, l'étiquette, la marge, etc.) que je charge dans une classe que j'appelle ControlPresenter. Fondamentalement, je définis ControlPresenter en tant que DataContext d'un ContentPresenter et utiliser un TemplateSelector pour choisir le type de contrôle à charger. Les DataTemplate (s) chargent leurs propriétés hors des DependencyProperties exposées par le ControlPresenter.Comment puis-je implémenter un DataBinding "pass-through"?
Tout cela fonctionne très bien. Le problème auquel je suis confronté vient lorsque j'essaie de lier des données (par exemple la propriété Text de TextBox à la propriété Name d'un présentateur) dans d'autres présentateurs (qui ont des propriétés normales qui implémentent INotifyPropertyChanged) à ces contrôles. DataContext est le ControlPresenter associé au contrôle de sorte que je ne peut pas se lier directement aux autres témoins et je ne peux pas mettre en place deux fixations sur la même propriété de dépendance (I ne peut pas lier le contrôle et la propriété présentateur souhaitée à la même DP) .
solutions possibles:
- je pourrais convertir tous les autres présentateurs à utiliser DPs (temps extrêmement long et susceptibles de causer des problèmes avec l'héritage)
- je pourrais utiliser deux DPs pour chaque propriété I veulent passer à travers et essayer de les attacher ensemble au moyen de notifications modifiées
ces deux semblent problématiques et sujettes à la rupture, donc je suis en espérant que quelqu'un d'autre est venu avec un meilleur s solution.
Editer: Je suis arrivé avec une solution qui fonctionne assez bien (voir ci-dessous). Merci à tous ceux qui ont regardé cela et si vous trouvez une meilleure méthode que je l'ai fait s'il vous plaît faites le moi savoir.
hmm, je vais devoir voir si je peux obtenir l'option numéro 3 fonctionnant. –