Avoir une demande étrange. J'ai besoin d'être averti quand une ressource dynamique change par rapport à un FrameworkElement, mais je ne définis pas une propriété sur ce FrameworkElement. En tant que tel, je ne peux pas utiliser {DynamicResource someKey}
en XAML, ni someElement.SetResourceReference()
en code-behind.Comment pouvez-vous être averti des modifications de DynamicResource (par rapport à un FrameworkElement particulier) sans avoir de DependencyProperty pour le définir?
Maintenant obtenir la valeur actuelle est facile. Vous appelez simplement someElement.FindResource("someKey")
et vous obtenez quelle que soit la valeur actuelle, mais cela nécessite une interrogation. J'ai envisagé de créer un faux objet source de liaison auquel je pourrais ensuite me lier, mais le problème est qu'il ne fait pas partie de l'arborescence visuelle, donc à moins que cette ressource ne soit définie au niveau de l'application, vous ne l'obtiendrez pas. Vous ne pouvez pas non plus bloquer des choses dans l'arbre visuel.
J'ai vu une réponse qui utilise des comportements qui peuvent définir une DependencyProperty, et lorsqu'ils sont attachés à FrameworkElement, ils se mettent à jour comme on le soupçonnerait, mais cela nécessite XAML puisque je ne sais pas comment appeler les Behaviors- équivalent de setResourceReference de FrameworkElement.
Alors ... des pensées?
Pourquoi auriez-vous besoin d'une telle chose? Êtes-vous sûr que la ressource est la voie à suivre? –
lol ... J'aime quand les gens commentent l'usage plutôt que la question. Oui, ça doit être une ressource. Je l'ai simplifié à l'extrême pour obtenir les informations de base dont j'ai besoin, c'est-à-dire pouvoir lier une ressource dynamique et la transmettre à travers un convertisseur. J'ai effectivement trouvé une solution sous la forme d'une DynamicResourceExtension où dans ProvideValue j'obtiens la valeur de base de ProvideValue(), définissez cela comme la valeur d'un Dp de type objet sur un comportement personnalisé, ajoutez le comportement aux comportements de l'élément de framework cible , puis aussi l'utiliser comme la source d'une liaison où je mets le convertisseur et le retour. – MarqueIV