2012-04-08 7 views
0

내 WP7 응용 프로그램에서 모든 페이지는 ResourceDictionay에 정의한 배경으로 ImageBrush를 사용합니다. 이 ResourceDictionary는 App.xaml을 통해 전역으로 병합됩니다.런타임에 ResourceDictionary에서 ImageBrush 업데이트

<ImageBrush x:Key="PhonePageBackground" ImageSource="/Background1.jpg"/> 

임 런타임시 ImageBrush와의 ImageSource를 업데이트하려고하지만, 그 작동하지 않는 다음 ResourceDictionary에의 ImageBrush와는 다음과 같이 정의된다.

내가 배경을 변경하는 데에 버튼이있는 페이지가 몇 가지 테스트를, 만들기, 나는 아래 코드는 잘 작동 것을 깨달았다 : 나는에서 ImageBrush와를 사용

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 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) 조치를 구축합니다. Resource set로 테스트했지만 성공하지 못했습니다.

왜이 동작의 모든 지식?

답변

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

실제로 작동하지만 그게 무슨 일을 하려는지는 아닙니다. LayoutRoot.Background는 업데이트하지만 리소스 사전에서는 ImageBrush를 업데이트하지 않습니다. 배경과 ImageBrush 리소스를 모두 업데이트하고 싶습니다. 이 문제는 내 다른 게시물 [여기] (http://forums.create.msdn.com/forums/t/102679.aspx)에서 해결되었습니다. – dferrazm

관련 문제