2010-11-20 5 views
1

Silverlightのない何もしませんが、これは私のコードです:this.Backgroundを設定すると、Imはここに愚かな何かをするかどうかわから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); 
     } 
} 

何も起こりませんか?ページの色は変わりませんか?クエリ文字列は完全にうまくいきます。メインページのボタンをクリックして私が言うframeMain.Navigate(new Uri("/AddEdit.xaml?type=edit", UriKind.Relative));

私は間違って何をしていますか?

答えて

2

ページのXamlに移動していて、影響を受けないトップレベルnavigation:Page要素にBackground="Blue"を追加する場合は、

Pageの最上位レベルの子は、Gridなどのパネルタイプであり、おそらくデフォルト名LayoutRootが指定されている可能性があります。したがって、このようにコードを変更します -

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); 
     } 
} 

説明

のみBorder要素とPanel要素は、実際にBackgroundの作業の実装を持っています。

ControlベースタイプもBackgroundプロパティを持っていますが、それをどうすればいいのかわかりません。 Backgroundプロパティを使用して何をすべきかを決めるために、制御テンプレートに任せます。ほとんどの場合、テンプレートには、コントロールのBackground値を表示のためにボーダーに渡す他のものと同等のものがある最上位レベルBorderが含まれます。

両方 Page

UserControlは、したがって、それらの両方がBackgroundプロパティを取得Control由来します。しかし、テンプレートを持たないコントロールはこれらのコントロールのいずれも使用することはなく、変更することは何にも影響しません。

+0

lol!うわー、それは簡単だった。私はとても愚かだと感じる!私は午前1時の欲求不満は本当にあなたを盲目にすることができると思う!ありがとうアンソニーボーナスはあなたにポイント! =) – gideon

関連する問題