【发布时间】:2013-01-22 12:59:32
【问题描述】:
我有一个ObservableCollection,我想将它保存到二进制文件中。该集合中的一项包含System.Windows.Controls.Image 类型的字段,因此在保存时出现错误:
Type 'System.Windows.Controls.Image' in Assembly 'PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is not marked as serializable.
我想我可以尝试将 Image source 转换为 byte[] 变量并保存它,但我还想保存一些 Image 属性,例如我添加的事件处理程序或效果。
有什么简单的方法吗?还是有可能?
【问题讨论】:
-
您想序列化一个事件处理程序?嗯?
-
@krajol 如前所述,您的数据项不应包含图像控件。您应该将图像属性声明为
ImageSource(并搜索 SO 以获取如何序列化该图像的解决方案),或者如果图像可通过 URL 获得,则应声明为Uri或string。此外,对于其他图像特征(效果等),您必须找到易于序列化的表示。您可以通过描述性字符串定义效果,并定义一组标志来控制附加的事件处理程序,等等。这样你就可以定义一个叫做视图模型的东西。 -
@Clemens 谢谢,我想这就是我所期望的答案。
标签: c# wpf image serialization