System.Xml.XmlWriterSettings settings = new System.Xml.XmlWriterSettings()
{
ConformanceLevel = System.Xml.ConformanceLevel.Auto
};
System.Xml.XmlWriter xmlWriter = System.Xml.XmlWriter.Create(sfd.FileName, settings);
foreach (object obj in canvas.Children)
{
System.Windows.Markup.XamlWriter.Save(obj, xmlWriter);
}
xmlWriter.Close();
Сохранение объектов в файл
сохранять пробывал так:
Код:
и тут появляется вторая проблема:
выскакивает исключение InvalidOperationException: невозможно выполнить сериализацию для универсального типа. Дело в том, что мой объект на панели имеет свойство универсального типа (ссылку на другой объект) и XamlWriter не хочет его сохранять.
на счет восстановления объектов из файла идей пока нет вообще
Этот процесс называется сериализацией =)
я знаю как это называется и что это такое. дело в том, что не хочу я сериализовывать класс. мне бы как-нибудь по другому сохранять содержимое панели.
или создай новый экземпляр класса перед сериализацией - инициируй его значениями объекта лежащего по ссылке и сериализуй(набивай нужные данные с панели в свой класс). А ссылку ты конечно не сериализуешь
тоже вариант, но получается так, что один и тот же объект в файл будет записываться дважды (один раз как содержимое панели, второй - как объект, на который ссылается другой объект). а если на один и тот же объект ссылается несколько других, то соответственно и в файл он попадет несколько раз. А может я не так понимаю?
тут важен порядок "обхода" содержимого панели - те надо тогда ввести что-то типа уровней иерархии объектов или элемент связи(типа ChildOf ParentOf как в три нодах =) ).
а поле Chileof какого типа должно быть?