2012-10-11 28 views
1

我有一个DragCanvas类,它从Canvas继承,并提供拖动,调整元素大小和重新定位的功能。我希望能够将画布的内容保存/载入XAML文件。将WPF画布的子项序列化/反序列化到/从XAML文件

出口的方法是这样的:

public void ExportPanel() 
    { 
     string savedCanvasString = XamlWriter.Save(editCanvas); 
     File.WriteAllText("Canvas.xaml", savedCanvasString); 
    } 

的代码似乎是工作的罚款,因为我实际上得到一个Canvas.xaml有很长的字符串文件。

但是,导入方法在XamlReader.Load方法中引发异常。更特别的是:“将值添加到'System.Windows.ResourceDictionary'类型的字典中引发异常。”导入方法中的代码部分基于this article。这里的代码:

public void ImportPanel() 
    { 
     string savedCanvasString = File.ReadAllText("Canvas.xaml"); 
     StringReader stringReader = new StringReader(savedCanvasString); 
     XmlReader xmlReader = XmlReader.Create(stringReader); 
     DragCanvas savedCanvasChildren = (DragCanvas)XamlReader.Load(xmlReader); // The exception is being thrown here. 

     // Assignment code should be here. 
    } 

你有什么想法我做错了什么?提前致谢!

回答

1

为了将来的参考,我最终自己序列化了相关属性。在理解如何解决问题的过程中,this article的内容非常有用。