Existe-t-il un moyen simple de déterminer si une propriété d'un objet de domaine est liée à un élément WPF, et si oui, quel élément et quelle propriété? Par exemple, disons que j'ai un UserControl avec une TextBox et que je lie la propriété "Text" du contrôle à la propriété "Description" de mon objet domain. Étant donné uniquement le nom de la propriété d'objet de domaine ("Description"), comment puis-je récupérer l'expression BindingExpression pour cette propriété?WPF: propriété des objets de domaine de liaison de liens
Répondre
Non, il n'y a pas de moyen simple de le faire. La liaison ne fonctionne pas, votre propriété peut être liée à plusieurs propriétés de dépendance de plusieurs éléments et n'a aucune idée à ce sujet. Vous devez essentiellement parcourir l'objet VisualTree, énumérer les propriétés de dépendance pour chaque FrameworkElement, obtenir BindingExpressions et comparer le chemin d'accès à la liaison pour voir s'il correspond au nom de propriété que vous recherchez. En plus de cela, vous devrez également comparer le DataContext à l'objet. Je peux toujours penser à de nombreuses situations où cela échouera, par ex. Le chemin n'est pas toujours utilisé dans une liaison, vous pouvez utiliser le DataContext directement.
Quoi qu'il en soit, voici un link avec une implémentation qui fait cela. Je l'ai essayé et cela fonctionne mais il a fallu environ 2 secondes pour terminer une recherche avec juste un DataGrid contenant 4 colonnes et 10 lignes. Il ne fait pas le contrôle DataContext mais je l'ai ajouté à mon application de test mais je ne publierai pas le code car je ne pense pas que vous l'utiliserez. Faites-moi savoir si vous le voulez de toute façon et je l'afficherai.
J'espérais que ce ne serait pas la seule option; Je peux au moins espérer accélérer le processus en utilisant FrameworkElement.GetLocalValues pour récupérer uniquement les propriétés avec des valeurs définies, mais comme vous le dites, cela ne sera pas particulièrement efficace. –
@Martin Robins: J'avais besoin de quelque chose de similaire il y a quelque temps. Si vous trouvez une meilleure façon (ou même optimisée) de le faire, assurez-vous de mettre à jour –
- 1. WPF: Définir la propriété de liaison pour la liaison ListBox
- 2. WPF Liaison de données à des objets de collection personnalisés
- 3. Liaison de WPF à des objets imbriqués dans un ResourceDictionary
- 4. WCF WPF et des objets Domaine
- 5. Propriété WPF IsReadOnly Liaison
- 6. Propriété parent de liaison WPF dans HierarchicalDataTemplate
- 7. Liaison de données WPF IsEnabled Propriété
- 8. WPF: liaison à une propriété de dépendance
- 9. Problème de liaison de données de propriété de dépendance WPF
- 10. Objets de domaine Java
- 11. Problèmes de liaison WPF
- 12. WPF: Liaison de données d'une propriété de dictionnaire
- 13. liaison WPF de la propriété de chaîne et Button.Content
- 14. données WPF de liaison
- 15. Référentiel, objets d'entité et objets de domaine
- 16. Pouvez-vous StringFormat la propriété NavigateUri pour les liens hypertexte lors de la liaison de données de propriété XAML?
- 17. WPF DataGrid éditeur de liens Paramètre vers une autre propriété
- 18. Liste de liaison d'objets à WPF ListView
- 19. Liaison de propriété Silverlight
- 20. WPF: Personnalisation d'un datatemplate à l'aide d'une propriété de liaison
- 21. propriété de liaison à travers les contrôles dans WPF
- 22. Problème de liaison WPf
- 23. définition de la propriété des objets DataContext
- 24. WPF Liaison simple à une propriété d'objets
- 25. WPF TabControl Liaison de données
- 26. Liaison de la propriété Visible d'un DataGridColumn dans WPF DataGrid
- 27. wpf ressource de liaison à la propriété d'un autre élément
- 28. Problème de liaison WPF ListView.ItemsSource
- 29. Liaison de données de droite dans WPF
- 30. Liens de catégorie de liaison (Wordpress)
Du contexte de l'objet domaine ou du contexte du contrôle utilisateur? –