Silverlight 在运行时从ResourceDictionary更新ImageBrush
在我的WP7应用程序中,所有页面都使用我在ResourceDictionary中定义的ImageBrush作为背景。此ResourceDictionary通过App.xaml全局合并。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)不起作用。页面背景变得透明,好像
<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;
}