2016-04-09 35 views
0

這可能是一匹死馬,但我需要能夠提供一個完整的圖像的本地文件夾,在我的Xamarin應用程序之外 - 不是資源,也不需要編譯以添加更多圖像 - 並在Image對象中的應用程序中顯示這些圖像。我的主要目標平臺是Windows 10.其他人很高興,不需要。如何在Windows 8上顯示Xamarin Forms中的任意文件夾的圖像

Xamarin表單圖像通常採用文件名(無路徑)或URI。我無法從任何方法找到並顯示來自本地文件系統的圖像。我一定在做一些基本的錯誤。

非工作樣本:

我找到解釋如何捆綁圖像與應用程序作爲源的一部分
Image i = new Image(); 
i.Source = ImageSource.FromFile(some.png); // Needs to be from folder on local disk 
grid.Children.Add(i, c, r); 

大多數文章;再次我需要將它們顯示在應用程序中的文件夾中,而不是將它們與應用程序捆綁在一起。用戶應該能夠添加更多的圖像到文件夾,他們可以在應用程序中工作,而無需重新編譯/重新安裝 - 就像圖庫。

編輯:我能夠使用PCLStorage https://github.com/dsplaisted/pclstorage成功讀取文本文件。有沒有辦法將它連接到Xamarin表單圖像?

回答

3

您需要編寫一個特定於平臺的類來讀取圖像並返回StreamImageSource可以使用的流。然後,您可以使用DependencyService將此行爲暴露給Forms PCL。

或者,你可以使用PCLStorage

var f = await FileSystem.Current.LocalStorage.GetFileAsync (path); 

    Stream s = await f.OpenAsync (FileAccess.Read); 
    image.Source = ImageSource.FromStream(() => s); 
+0

我能夠讀取使用PCLStorage磁盤的文本文件(見上面的註釋)。這可以用於圖像嗎? – onupdatecascade

+0

是的,你應該能夠返回一個StreamImageSource可以使用的流 – Jason

+0

Works!謝謝。我需要圍繞整個asyc/await模式(我只是一個業餘c#開發人員:-),但傳遞一個流的作品。非常感謝。 – onupdatecascade

0

基本上,你不能。如果您沒有將圖像與您的應用程序捆綁在一起,您必須以某種方式將圖像傳輸到應用程序。最常見的情況是,您可以在某個位置的Web服務器上提供這些圖像,應用程序會從該Web服務器下載圖像。

相關問題