将内容保存到文件,然后将其读回并显示

时间:2014-01-23 10:28:58

标签: c# wpf file-io save

我有一些细节,即画布上的图像,文本框中的XAML和列表框中的项目。无论扩展名如何,如何将所有这些内容保存在一个文件中。我还应该能够打开这些文件并将所有内容放回到它们的位置,即Canvas中的Image,文本框中的XAML和listbox中的项目。我试图将详细信息保存在String中并保存,但我无法再打开它并放回内容。

我用来保存内容的代码是:

String Data = imagesource + xamldata + xamldesign + listboxitems;
try
{
    System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileDialog.FileName);
    file.WriteLine(Data);
    file.Close();
}

这里的imagesource是获取图像的源。 xamldata来自文本框,listboxitems包含列表框中的项目列表。

1 个答案:

答案 0 :(得分:0)

不,不,不。  这里的事情有点复杂。您应该理解并接受一种称为“序列化”的新范例 - 列表中的所有这些内容:图像,文本,列表框中的项目具有不同的性质和目的,它们可以轻松地存储在同一个文件中,但应该是: 尊贵的 2.正确对待 - 即你把图像作为一系列字节,把它放在文件中的某个地方(由长度或数据结构本身定义),然后在加载时从文件中取回它,重新创建图像,放置它画布,文本和元素相同。

计算机只是无法读懂你的想法,并了解哪些字节在哪里。由您自己“教导”您存储的部分信息是如何被正确对待的。通常为这样的任务类创建,例如:

 public class StoreClass {
   public byte[] Image {get;set;}
   public string Text {get;set;}
   public List<MyListItem> ListContent {get;set;}
 }

//here goes MyListItem definition
public class MyListItem {....}

然后在需要时填写此类并在磁盘上序列化,稍后从磁盘加载它(称为“desirialization”的过程)并将其内容放在正确的位置。

您可以阅读更多here