2013-03-01 57 views
1

在Windows地鐵應用程序(C#),我使用的是ValueConverter通過影像-URI是這樣的:圖像源結合在本地存儲到文件

public class ProfileImage : IValueConverter { 

    public Object Convert(Object value, Type targetType, Object parameter, String language) { 

     if (value == null) { 
      return "Common/images_profile/user.png"; 
     } 

     return "ms-appdata:///local/" + (String)value; 

    } 

    public Object ConvertBack(Object value, Type targetType, Object parameter, String language) { 
     return value; 
    } 

} 

XAML:

<Image x:Name="profileImage" Height="80" Width="80" Source="{Binding Path, Converter={StaticResource ProfileImage}}"/> 

正在將圖像異步下載到localFolder中。

我想用這個在Windows Phone 8 - 但它不顯示任何圖像。

var localFolder = ApplicationData.Current.LocalFolder; 
StorageFile myFile = await localFolder.CreateFileAsync(
    UID + ".jpg", 
    CreationCollisionOption.FailIfExists); 

using (var s = await myFile.OpenStreamForWriteAsync()) { 
    s.Write(imageBytes, 0, imageBytes.Length); 
} 

用於將圖像寫入LocalStorage。

如果value中沒有內容,Common/images_profile/user.png中的圖像正在正確顯示。這一個是在包裝,而不是在本地文件夾。

我需要知道我必須使用作爲返回參數來獲取所顯示的圖像的格式。

回答

1

我認爲URL方案ms-appdata:///無處不在。

我使用這個conveter從獨立存儲結合圖片:在您的網址前綴:

public class PathToImageConverter : IValueConverter 
{ 
    private static IsolatedStorageFile isoStorage = IsolatedStorageFile.GetUserStoreForApplication(); 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     string path = value as string; 

     if (string.IsNullOrEmpty(path)) 
      return null; 

     if ((path.Length > 9) && (path.ToLower().Substring(0, 9).Equals("isostore:"))) 
     { 
      using (var sourceFile = isoStorage.OpenFile(path.Substring(9), FileMode.Open, FileAccess.Read)) 
      { 
       BitmapImage image = new BitmapImage(); 
       image.SetSource(sourceFile); 

       return image; 
      } 
     } 
     else 
     { 
      BitmapImage image = new BitmapImage(new Uri(path)); 

      return image; 
     } 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

對於綁定,則必須使用isostore。

+0

這一個正常工作,謝謝! – max06 2013-03-04 15:34:55

0

必須在這裏失去了一些東西..你爲什麼不使用,而不是返回「迴歸‘MS-應用程序數據StorageFile.Path:///本地/’+(字符串)值;」

意識到它#WP8所以另一回事。你仍然可以使用獨立存儲和Silverlight Uri

相關問題