2009-11-17 7 views
6

Je voudrais être en mesure de définir une propriété à une ressource dynamique par programme.comment utiliser DynamicResource dans le code derrière?

myControl.Property = this.Resource[key] 

est une réponse incorrecte, car si la ressource avec la clé 'clé' est remplacée, la propriété n'est pas mise à jour automatiquement.

Merci pour vous réponse,

Répondre

13

Une ressource statique ne sera pas mise à jour si vous le faites dans le code ou XAML. Vous aurez besoin d'une ressource dynamique pour cela.

En XAML:

<Grid x:Name="grid" Background="{DynamicResource Brush}"/> 

Dans le code:

grid.SetResourceReference(Grid.BackgroundProperty, "Brush"); 
+0

Non, vous avez tort, si la ressource est modifiée par une autre ressource statique mettra à jour la cible. StaticResource ne se met pas à jour si une propriété de la ressource change, c'est tout. –

+0

Désolé, mais vous avez tort. Le point entier des ressources statiques est qu'elles sont résolues au moment de la compilation. Vous pouvez faire un test simple pour le prouver. –

+0

Pas moyen, j'étais si sûr de moi, comment je pourrais croire ça !!! désolé homme, peut-être la bonne question était « comment utiliser DynamicResource dans le code derrière alors: p » –

1

Sachez que DynamicResource n'est pas disponible dans Silverlight; c'est seulement dans WPF (Silverlight a seulement StaticResource).

Depuis que vous avez taguée votre question à la fois Silverlight et WPF, je soupçonne que vous soyez à la recherche d'une solution qui fonctionne dans les deux. Si tel est le cas, vous souhaiterez probablement utiliser la liaison de données au lieu de ressources, car vous devez mettre la propriété à jour en réponse aux modifications.

+0

oui, je ne savais pas DynamicResource était pas disponible dans SL, je mets à jour les balises, avez-vous avez une idée pour WPF? –

+0

Nicolas, je ne suis pas. N'ai-je pas répondu à votre question pour WPF? –

+0

Vous me dit d'utiliser la liaison de données au lieu des ressources, mais comment, avec la liaison de données dans le code sous-jacent, lier une propriété de dépendance à une ressource (de sorte que lorsque la ressource est remplacé par un nouveau, mon DP est mis à jour). Je ne vois pas comment je peux le faire avec une reliure. –

Questions connexes