2010-07-19 6 views
2

J'ai défini un modèle de menu qui, en théorie, doit utiliser la couleur d'arrière-plan de SoliColorBrush «AppBackground», définie dans un fichier distinct. En mode "debug", j'utilise le code suivant pour changer cette variable: this.Resources ["AppBackground"] = new SolidColorBrush (Colors.DarkGreen); Cela a l'effet escompté sur l'arrière-plan de l'application, cependant, il ne semble pas avoir d'effet sur le design de menu personnalisé que j'ai. J'ai essayé d'utiliser à la fois StaticResource et DynamicResource, sans aucune chance. Est-ce un problème connu, et y a-t-il un truc ici?WPF: Modification de la couleur d'arrière-plan d'un modèle

à ResourceDirectory Defined:

<SolidColorBrush x:Key="AppBackground" Color="#003466"/> 

définies dans un fichier:

<Style x:Key="{x:Type MenuItem}" TargetType="{x:Type MenuItem}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type MenuItem}"> 
       <Border x:Name="Border" BorderThickness="1"> 
       <Grid Background="{Binding Source={StaticResource AppBackground}}"> 
+0

Comment vous faites référence au dictionnaire Resouce à votre page via les ressources de l'application ou le fichier local? – Ragunathan

Répondre

2

havent vu que vous avez marqué que cela fonctionne pas non plus avec DynamicBinding. J'ai seulement regardé le code. C'est pourquoi j'ai écrit ma première réponse:

Utiliser DynamicBinding, cela devrait fonctionner.

Le vrai problème vous enveloppez la ressource via une liaison. Retirez ce, comme je l'ai écrit dans mon autre post. Désolé le chaos avec les réponses multiples.

<Grid Background="{DynamicResource AppBackground}">

+0

"J'ai essayé d'utiliser à la fois StaticResource et DynamicResource" – Will

+0

Exactement, Dynamic ne le coupe pas! Je crois qu'il doit faire quelque chose avec la propriété "templates". –

+0

Semble fonctionner maintenant! Thanks –

2

Il semble être une erreur de frappe: Retirez le {Binding... et cela fonctionne:

<Grid Background="{DynamicResource AppBackground}"> 

Les actes contraignants comme une enveloppe entre la ressource et la destination et empêche le suivi des les changements.

+0

Retourne l'erreur d'exécution: "Impossible de définir la propriété sur l'objet '# FF003466' car elle est en lecture seule.Le code est exécuté dans la fonction" OnStartup ", sous 'public partial class App: Application' –

+0

Voir ma dernière modification. .. – HCL

Questions connexes