2010-11-20 6 views
1

Je ne sais pas si Im fait ici quelque chose de stupide, mais voici mon code:réglage this.Background ne fait rien silverlight 4

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
     string s = this.NavigationContext.QueryString["type"]; 
     if (s == "add") 
     { 
      this.Background = new SolidColorBrush(Colors.Red); 
     } 
     else 
     { 
      this.Background = new SolidColorBrush(Colors.Blue); 
     } 
} 

Rien ne se passe? La page ne change pas de couleur? La chaîne de requête vient parfaitement bien. Je clique sur un bouton sur la page principale et là je dis frameMain.Navigate(new Uri("/AddEdit.xaml?type=edit", UriKind.Relative));

Qu'est-ce que je fais mal?

Répondre

2

Si vous deviez aller au Xaml pour votre page et ajouter Background="Blue" à l'élément de niveau supérieur navigation:Page qui n'aurait aucun effet non plus.

L'enfant de premier niveau du Page est très probablement un type de panneau tel qu'un Grid et très probablement le nom par défaut LayoutRoot. Par conséquent changer votre code à ceci: -

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
     string s = this.NavigationContext.QueryString["type"]; 
     if (s == "add") 
     { 
      LayoutRoot.Background = new SolidColorBrush(Colors.Red); 
     } 
     else 
     { 
      LayoutRoot.Background = new SolidColorBrush(Colors.Blue); 
     } 
} 

Explication

Seul l'élément Border et Panel éléments ont en fait une mise en œuvre de travail de Background.

Le type de base Control possède également une propriété Background mais il n'a aucune idée de ce qu'il doit en faire. Il laisse au modèle de contrôle de décider quoi faire de la propriété Background. Dans la plupart des cas, le modèle contiendra un niveau supérieur Border qui aura d'autres éléments Background="{TemplateBinding Background}" qui transmettra la valeur Background du contrôle à la bordure pour l'affichage.

Les deux Page et UserControl dérivent de Control et acquièrent ainsi la propriété Background. Cependant, ne pas avoir de modèle ni l'un ni l'autre de ces contrôles n'aura aucune utilité pour la propriété et la modifier n'a aucun effet sur quoi que ce soit.

+0

lol! wow c'était simple. Je me sens tellement stupide! Je suppose que la frustration à 1h peut vraiment vous rendre aveugle! Merci Anthony Bonus points à vous! =) – gideon