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