2012-09-01 6 views
0

MSDN Windows Phone 소개 및 개발 랩 중 하나를 수행 중이며 this lab (Windows Phone 응용 프로그램에서 사용 가능한 컨트롤 소개) 문제가 발생했습니다. 실습실에서는 시작 파일과 최종 파일 (즉 실험실 완공시 프로그램의 모양)을 제공합니다.Null 참조 StreamResourceInfo가 ResourceStream을 가져 오려고 할 때 예외가 발생합니까?

나를 괴롭히는 실험실의 특정 부분은 Assets 폴더의 일련의 이미지를 읽은 다음 화면의 ListBox에 표시하는 지점입니다. 이 코드를 실행하려고 할 때마다, null 참조 예외가 발생합니다 :

public static BitmapImage GetImage(string filename) 
    { 
     string imgLocation = Application.Current.Resources["ImagesLocation"].ToString(); 

     StreamResourceInfo imageResource = Application.GetResourceStream(new Uri(imgLocation + filename, UriKind.Relative)); 
     BitmapImage image = new BitmapImage(); 
     image.SetSource(imageResource.Stream); 

     return image; 
    } 

내가 할 수있는 나는만큼 파고는데, imageResource 항상 어떻게 든 널을 바람을, 그리고 내 인생 내가 할 수 없습니다 어디서 잘못 될지 파악하십시오.

나는 두 프로젝트 here (129 MB, 죄송합니다)에 대한 링크를 포함 시켰습니다. "시작"폴더 아래의 모든 항목은 지금까지 내가 수행 한 작업이며 런타임 중에 이미지 페이지로 이동하려고 할 때 예외가 발생합니다. "끝"폴더 밑에있는 모든 것이 마치 끝내주는 것처럼 보이며 기능적입니다.

저는 C#과 WP7 개발에 익숙합니다. 그래서 어떤 도움을 주시면 대단히 감사하겠습니다. 고맙습니다!

+0

아마 파일을 찾을 수 없습니까? 새로운 Uri (imgLocation + filename, UriKind.Relative)가주는 점은 무엇입니까? – MaxDataSol

+0

URI가 패키지와 관련하여 정확합니까? –

+0

@MaxDataSol - 새로운 Uri (imgLocation + filename, UriKind.Relative)가 Assets/Images/Butterfly.jpg를 예상대로 제공합니다. – PingZing

답변

1

문제는 당신이 App.xaml 파일에 이미지 디렉토리를 설정하면, 튜토리얼의 실수가 있다는 것입니다 :

여기에 그것을 설명하는 링크의 몇입니다. 당신은 응용 프로그램 자원이 같은 ImagesLocation을 설정해야합니다

Begin이 프로젝트 이름 ;component/가 구분자로 필요하고, 마지막으로 Assets/Images/이 이미지 디렉토리의 상대 경로입니다
<system:String x:Key="ImagesLocation">Begin;component/Assets/Images/</system:String> 

.

2
+0

모든 이미지 (마치 .jpg 인 경우)가 이미 Build Action을 Resource로 설정 한 것처럼 보입니다. 아무렇게나 다른 것으로 바꾸고 다시 시도해 보았습니다. – PingZing

+0

출력 디렉토리로 복사 설정이란 무엇입니까? Copy Always (항상 복사) 또는 Copy (복사)로 변경하십시오. – MaxDataSol

+0

출력 디렉토리로 복사가 "복사 안 함"으로 설정되었습니다. 이들을 "항상 복사"또는 "더 새로운 경우 복사"로 변경하면 여전히 null 참조가됩니다. – PingZing

관련 문제