2013-02-01 86 views
0

当我添加类型的BitmapImage我的班级我Windows 8的应用程序(如下图),我得到的成员“vehicleImage”:无法序列类型“Windows.UI.Xaml.Media.Imaging.BitmapImage”

Cannot serialize member vehicleImage' of type 'Windows.UI.Xaml.Media.Imaging.BitmapImage', see inner exception for more details. 

内部异常详细信息:

System.Runtime.InteropServices.WindowsRuntime.RuntimeClass is inaccessible due to its protection level. Only public types can be processed. 

代码:

public BitmapImage vehicleImage 

     { 
      get 
      { 
       return m_vehicleImage; 
      } 
      set 
      { 
       Uri _baseUri = new Uri("ms-appx:///"); 
       BitmapImage imageBitmap = new BitmapImage(new Uri(_baseUri, ImagePath)); 
       m_vehicleImage = imageBitmap; 
       OnPropertyChanged("vehicleImage"); 
      } 
     } 

     private async void SetImage() 
     { 
      var file = await Windows.Storage.KnownFolders.PicturesLibrary.GetFileAsync(ImagePath); 
      var fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); 
      var img = new BitmapImage(); 
      img.SetSource(fileStream); 

      vehicleImage = img; 
     } 

我赛瑞亚将对象转换为XML。当我删除这一点的代码一切正常。我希望能够拥有用户从计算机中选择的图像(这就是为什么我要使用BitmapImage类型)。

任何帮助表示赞赏。

回答

2

使用System.Xml.Serialization命名空间来访问这些属性的[XMLIgnore()]。

你应该想要存储图像所在的字符串,是否正确?然后你序列化字符串,和[XMLIgnore()] BitMapImage。

这样可以在序列化发生时仍可以访问BitMap图像。

+0

今晚我会尝试。我甚至没有想到XMLIgnore标签。我希望它能起作用! – webdad3

相关问题