序列化和反序列化System.Windows.Controls.UIElementCollection

时间:2013-09-09 00:02:11

标签: c# wpf

我从WPF中的 System.Windows.Controls.Canvas 对象获取 System.Windows.Controls.UIElementCollection ,它包含了很多系统.Windows.Shape 对象

我想要实现的是在Canvas中序列化这些对象,然后在以后对它们进行反序列化:就像保存/加载一样。

序列化代码:

var items = view.myCanvas.Children;

var mystrXaml = XamlWriter.Save(items);
var fs = File.Create(@"C:\data.xaml");
var sw = new StreamWriter(fs);
sw.Write(mystrXaml);
sw.Close();
fs.Close();

反序列化代码:

var sr = new StreamReader(@"C:\data.xaml");
var xmlReader = new XmlTextReader(sr);
var xamlReader = XamlReader.Load(xmlReader);

序列化似乎很好,而反序列化会产生此错误:

  

在类型'System.Windows.Controls.UIElementCollection'上找不到匹配的构造函数。您可以使用Arguments或FactoryMethod指令来构造此类型。行号“1”和行位置“22”。

我从概念上理解 UIElementCollection 没有无参数构造函数,因为它需要两个参数:

UIElementCollection(UIElement visualParent, FrameworkElement logicalParent);

如何在反序列化UIElementCollection时注入这些参数?或者我是以错误的方式解决这个问题?

由于

小编辑:之所以我认为这是可能的,是因为这个库:http://www.codeproject.com/Articles/620154/UniversalSerializer似乎能够完全满足这种情况,但我无法弄清楚怎么做,似乎有一些反思魔法。

0 个答案:

没有答案