2012-12-11 104 views
1

可能重複:
how to populate a listbox with files in the project of my windows phone 7 application只需從內部項目文件夾中獲取文件

我在C#中的新手,這很討厭我很多東西。

我的應用程序從我在解決方案資源管理器上簡單創建的名爲Images的文件夾加載一組圖像。我可以看到這些圖像,如果我使用它與URI和東西硬編碼,但我想要做的是將這些圖像名稱dinamycally然後加載它。我看到了一些類似的問題,但無法解決我的問題。我想是這樣的:

DirectoryInfo directoryInfo = new DirectoryInfo(@"/Images"); 
foreach (FileInfo file in directoryInfo.GetFiles()) { 
     photos.Add(new Photo() { FileName = file.FullName, PhotoSource = GetImageSource("Images/" + file.FullName) }); 
} 

directoryInfo總是被設置爲NULL。在Solution Explorer如圖所示我的項目層次結構是這樣的:在任何幫助

Project 
    Main.xaml 
     Maim.xaml.cs 
    Images 
     1.jpg 
     2.jpg 
     ... 

感謝。

回答

0

也許你想使用

string path = Path.Combine(Environment.CurrentDirectory, "Images"); 
foreach (string file in Directory.GetFiles(path) 
{ 
    photos.Add(new Photo {FileName = file, PhotoSource = GetImageSource(Path.Combine(path, Path.GetFileNameWithoutExtension(file))}); 
} 

返回的文件夾的內容的列表。

Path.Combine結合單串的完整路徑(所以您不必擔心Backslahes。

的路徑命名空間是相當低估的,我建議你仔細看它因爲它會爲你節省很多時間

+0

問題是關於Windows Phone。您無權訪問Windows Phone上的文件系統。 –

+0

是的,它沒有工作。環境。CurrentDirectory'正在拋出一個異常'試圖訪問失敗的方法:System.Environment.get_CurrentDirectory()'。還有什麼想法?不管怎麼說,還是要謝謝你。 –

1

MSDN

對於Windows Phone應用程序,所有的I/O操作僅限 獨立存儲,並沒有對基礎 歌劇直接訪問系統文件系統或其他應用程序的隔離存儲。

因此,您無法以自己喜歡的方式訪問您的圖片文件夾。

由於無法將圖像動態添加到XAP,因此可用圖像將保持不變。看樣子,你就只能手動添加的URI:

BitmapImage myImage = new BitmapImage(new Uri("Images/myImage.png", UriKind.Relative));

如果您已經爲不同的地區有不同的圖像,你可以包括在資源文件中的映像名稱/路徑,然後從那裏創建它們。

或者,如果您有一組默認圖像,然後會添加一些用戶添加的圖像,並且您想要遍歷所有這些圖像,則可以在初次啓動時將默認圖像從Images文件夾寫入IsolatedStorage,向上。有關使用IsolatedStorage的詳細信息,請參閱See here。您可以遍歷應用程序IsolatedStorageFile內的目錄和文件(請參閱methods available)。

相關問題