2013-07-09 30 views
0

我有一個存儲BitmapImage的ObservableCollection的類,我需要將這些信息存儲在IsolatedStorage中。我正在使用DataContract與其他類的工作。我在想,無法將BitmapImage設置爲DataMember會阻止它正常工作。ObservableCollection <BitmapImage> DataSerialize沒有序列化

錯誤信息是:

類型 'System.Windows.Media.ImageSource' 不能被序列化。考慮使用DataContractAttribute屬性標記它,並使用DataMemberAttribute屬性標記要序列化的所有成員。

任何幫助,將不勝感激。

CODE - 保存到IsolatedStorage

public static void AddOrUpdateUnsavedItems(string key, List<ProcessClass> unsavedItems) 
    { 
     var store = IsolatedStorageFile.GetUserStoreForApplication(); 
     if (store.FileExists("unsaveditem")) 
     { 
      store.DeleteFile("unsaveditem"); 
     } 
     using (var stream = new IsolatedStorageFileStream("unsaveditem", FileMode.OpenOrCreate, FileAccess.Write, store)) 
     { 
      DataContractSerializer dcs = new DataContractSerializer(typeof(List<ProcessClass>)); 
      dcs.WriteObject(stream, unsavedItems); 
     } 

    } 

CODE - 類

[DataContract] 
public class ProcessClass 
{  
    ObservableCollection<BitmapImage> images = new ObservableCollection<BitmapImage>(); 
    [DataMember] 
    public ObservableCollection<BitmapImage> Images 
    { 
     get { return images; } 
     set { images = value; } 
    } 
    [DataMember] 
    public string Notes { get; set; } 
    [DataMember] 
    public string ItemID { get; set; } 
} 

回答

0

BitmapImage的,根本就不是序列化使用數據合同,沒有辦法自己來改變這種狀況。

堅持BitmapImage(這是一個圖像)的唯一方法是使用BinaryWriterWriteableBitmap。用於將BitmapImage轉換爲byte []的圖像轉換器,反之亦然。

+0

爲什麼你提到WCF? –

+0

只是一個錯誤,謝謝 – Cybermaxs

+0

使用WritableBitmap和Extensions.SaveJpeg將列表轉換爲byte []。似乎節省很好 – Seige

相關問題