Silverlight 在运行时从ResourceDictionary更新ImageBrush

Silverlight 在运行时从ResourceDictionary更新ImageBrush,silverlight,windows-phone-7,silverlight-4.0,Silverlight,Windows Phone 7,Silverlight 4.0,在我的WP7应用程序中,所有页面都使用我在ResourceDictionary中定义的ImageBrush作为背景。此ResourceDictionary通过App.xaml全局合并。ResourceDictionary中的ImageBrush定义如下: <ImageBrush x:Key="PhonePageBackground" ImageSource="/Background1.jpg"/> 但是下面的代码(我使用字典中的ImageBrush)不起作用。页面背景变得透明,好像

在我的WP7应用程序中,所有页面都使用我在ResourceDictionary中定义的ImageBrush作为背景。此ResourceDictionary通过App.xaml全局合并。ResourceDictionary中的ImageBrush定义如下:

<ImageBrush x:Key="PhonePageBackground" ImageSource="/Background1.jpg"/>
但是下面的代码(我使用字典中的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)构建操作都设置为内容。我已经用资源集进行了测试,但没有成功

知道为什么会有这种行为吗?

这对我很有用

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

这确实有效,但不是我想要实现的。您正在更新LayoutRoot.Background,但不是资源字典中的ImageBrush。我希望更新背景和ImageBrush资源。这个问题在我的另一个帖子里已经解决了
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;
    }