2012-09-01 37 views
0

我正在關注Windows Phone開發實驗室的MSDN簡介之一,並且遇到了與this lab(Windows Phone應用程序的可用控件簡介)有關的問題。實驗室提供了開始文件和結束文件(即實驗室完成後程序的外觀)。StreamResourceInfo嘗試獲取ResourceStream時是否爲空引用異常?

讓我難倒的是實驗室的特定部分,我正在從一個資產文件夾中讀取一系列圖像,然後將它們顯示在屏幕上的列表框中。每當這個代碼試圖運行時,它拋出一個空引用異常:

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,對不起)。 「Begin」文件夾下的所有內容都是我迄今爲止所做的(並且在運行時嘗試導航到Images頁面時拋出Exception。 「結束」文件夾下的所有內容都是它應該最終看起來像的功能。

我很新來C#和WP7開發,所以任何幫助將不勝感激。謝謝!

+0

也許它只是無法找到該文件?新的Uri(imgLocation +文件名,UriKind.Relative)給你什麼? – MaxDataSol

+0

您確定URI相對於包是否正確? –

+0

@MaxDataSol - 新Uri(imgLocation +文件名,UriKind.Relative)按預期給我Assets/Images/Butterfly.jpg。 – PingZing

回答

1

的問題是,當你在App.xaml文件中設置你的圖片目錄中,有教程一個錯誤。你應該設置應用程序資源,ImagesLocation這樣的:

<system:String x:Key="ImagesLocation">Begin;component/Assets/Images/</system:String> 

Begin是您的項目名稱;component/需要作爲分隔符,最後Assets/Images/是你的圖像目錄的相對路徑。

2

嘗試將.bmp的構建更改爲「資源」。

這裏的解釋是幾個環節:

http://forums.silverlight.net/t/238891.aspx/1

Application.GetResourceStream called on a Content Resource still return null

+0

它看起來像所有的圖像(他們是.jpgs,如果這是重要的任何方式)已將他們的生成操作設置爲資源。無論如何,試圖改變他們到別的東西,並無濟於事。 – PingZing

+0

什麼是複製到輸出目錄設置?嘗試將其更改爲始終複製或複製(如果更新)。 – MaxDataSol

+0

將複製到輸出目錄設置爲「不要複製」。將它們更改爲「始終複製」或「如果更新則複製」仍然會導致空引用。 – PingZing

相關問題