0

私の 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) のビルド アクションがコンテンツとして設定されます。リソース セットでテストしましたが、成功しませんでした。

この動作の理由についての知識はありますか?

4

1 に答える 1

1

これは私のために働きます。

ImageBrush image; 
         public MainPage()                
        {
            InitializeComponent();

            image = (ImageBrush)Application.Current.Resources["PhonePageBackground"];
            LayoutRoot.Background = image; 
        }


private void button1_Click(object sender, RoutedEventArgs e)
        {

            image = new ImageBrush { ImageSource = new BitmapImage(new Uri("/Background2.jpg",  UriKind.Relative)) };
            LayoutRoot.Background = image;
    }
于 2012-04-09T05:59:29.283 に答える