我正在尝试通过序列化保存我在 Canvas 中的 WPF 代码。
我想要做的是我可以在我的 C# 程序中添加元素,然后当我按下保存时,我想将我的画布的内容保存到一个文件中。
我正在使用 SaveFileDialog 首先打开一个对话框,我可以保存文件。
但是当我试图保存它时,我遇到了问题。
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "Name_" + random_save_name;
dlg.DefaultExt = ".text";
dlg.Filter = "Text documents (.txt)|*.txt";
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
SerializeToXML(this.parentWindow, this.parentWindow.canvas, 96, dlg.FileName);
}
canvas 是我的画布的名称,SerializeToXML 像这样锁定。
public static void SerializeToXML(MainWindow window, Canvas canvas, int dpi, string filename)
{
XmlSerializer serializer = new XmlSerializer(typeof(Canvas));
TextWriter textWriter = new StreamWriter(filename);
serializer.Serialize(textWriter, canvas);
textWriter.Close();
}
我可以运行该程序,但我得到一个异常。我可能做错了,但我很难找到解决方案。
Eddt:“反映类型‘System.Windows.Controls.Canvas’时出现错误。” 和“异常拦截:SerialixeToXML,也拦截了一个异常,调用堆栈展开到从发生异常的用户代码调用之前的点。在调试器选项中选择了“展开未处理异常的调用堆栈”“我不是VS 中调试器的最佳读数,这就是现场活动所说的
编辑2:确实找到了这个:http: //blogs.msdn.com/b/ashish/archive/2008/01/15/dynamically-produce-xaml-files-using-xamlwriter-save-method.aspx现在我可以保存到一个txt文件。