J'utilise DataTemplates pour rendre des éléments dans ItemsControl. Je veux montrer une info-bulle pour chaque article. Si j'utilise une liaison telle que ToolTip = "{Binding MyToolTip, Mode = OneWay}", WPF obtient l'info-bulle une fois au début et ne met pas à jour l'info-bulle quand il est ouvert.WPF DataTemplate: Comment créer une info-bulle juste à temps?
Mes éléments implémentent INotifyPropertyChanged, donc en principe je pourrais générer des notifications de modification pour MyToolTip. Le problème est que l'info-bulle est produite à partir de nombreuses informations dans le modèle sous-jacent. Ces informations changent fréquemment et il serait à la fois lourd et inefficace de générer des notifications de modification pour la propriété MyToolTip. De plus, je ne veux pas que les info-bulles pour TOUS les articles soient produites au départ. Au lieu de cela, je voudrais forcer une nouvelle info-bulle à générer lorsque l'info-bulle est ouverte. Comment puis-je le faire?
Je suppose que quelque part avant d'appeler la mise à jour sur le BindingExpression, vous souhaitez mettre à jour le texte info-bulle? – micahtan
Il a dit qu'il serait fastidieux de générer des notifications de changement, mais je suppose que je supposais toujours que la propriété MyToolTip était toujours la bonne façon d'obtenir l'info-bulle. L'appel de BindingExpression.UpdateTarget() requerra cette propriété pour sa valeur. –
À ce stade, je pense que vous pourriez probablement ajouter UpdateSourceTrigger = Explicit à l'expression de liaison, et enregistrer le surcoût de remplissage de l'info-bulle lorsque le contrôle est d'abord rempli. –