我試圖保存WPF代碼,我有一個畫布與序列化。保存一個畫布的序列化爲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-producing-xaml-files-using-xamlwriter-save-method.aspx,現在我可以將其保存到一個txt文件。
你能告訴我們你得到什麼例外,哪裏好嗎? – Kek
它說「有反映類型'System.Windows.Controls.Canvas'的錯誤。」和「攔截的異常:SerialixeToXML」也攔截了一個異常,並且在發生異常的用戶代碼調用之前,調用堆棧解除了退出的狀態。在調試器選項中選擇了「在未處理的異常情況下展開調用堆棧」 VS中調試器的最佳讀數,這就是現場事件所說的 – Nivres
好吧......似乎你不允許序列化畫布。我不確定我是否理解您期望的結果:您想要在文件中獲得完整的WPF對象圖嗎? – Kek