C# 无法序列化成员';车辆图像';类型为';Windows.UI.Xaml.Media.Imaging.BitmapImage';
当我为我的Windows 8应用程序(以下)将类型BitmapImage添加到我的类时,我得到:C# 无法序列化成员';车辆图像';类型为';Windows.UI.Xaml.Media.Imaging.BitmapImage';,c#,xaml,windows-8,C#,Xaml,Windows 8,当我为我的Windows 8应用程序(以下)将类型BitmapImage添加到我的类时,我得到: Cannot serialize member vehicleImage' of type 'Windows.UI.Xaml.Media.Imaging.BitmapImage', see inner exception for more details. 内部异常详细信息: System.Runtime.InteropServices.WindowsRuntime.RuntimeClass i
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.
代码:
我正在将对象序列化为XML。当我删除这段代码时,一切正常。我希望能够拥有用户从计算机上选择的图像(这就是我尝试使用BitmapImage类型的原因)
非常感谢您的帮助。使用System.Xml.Serialization命名空间访问[XMLIgnore()]以获取此类属性 您应该想存储图像所在位置的字符串,对吗?然后序列化该字符串,[XMLIgnore()]位映射图像
这允许在进行序列化时仍能访问位图图像。今晚我将尝试。我甚至没有想到XMLIgnore标记。我希望它能起作用!
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;
}