私の WP7 アプリケーションでは、すべてのページが、ResourceDictionay で定義した背景として ImageBrush を使用しています。この ResourceDictionary は、App.xaml を通じてグローバルにマージされます。ResourceDictionary の ImageBrush は次のように定義されます。
<ImageBrush x:Key="PhonePageBackground" ImageSource="/Background1.jpg"/>
実行時に ImageBrush の ImageSource を更新しようとしていますが、機能していません。
背景を変更するためのボタンが付いたページがあるいくつかのテストを行ったところ、以下のコードが正常に機能することがわかりました。
ImageBrush image;
public MainPage()
{
InitializeComponent();
image = new ImageBrush { ImageSource = new BitmapImage(new Uri("/Background1.jpg", UriKind.Relative)) };
LayoutRoot.Background = image;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
image.ImageSource = new BitmapImage(new Uri("/Background2.jpg", UriKind.Relative));
}
しかし、辞書の ImageBrush を使用する以下のコードは機能しません。画像が見つからなかったかのように、ページの背景が透明になります。
ImageBrush image;
public MainPage()
{
InitializeComponent();
image = (ImageBrush)Application.Current.Resources["PhonePageBackground"];
LayoutRoot.Background = image;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
image.ImageSource = new BitmapImage(new Uri("/Background2.jpg", UriKind.Relative));
}
両方のイメージ (Background1.jpg と Background2.jpg) のビルド アクションがコンテンツとして設定されます。リソース セットでテストしましたが、成功しませんでした。
この動作の理由についての知識はありますか?