Сериализация.
[DataContract]
public sealed class Test
{
public DetailCollection Details {get;set;}
}
[CollectionDataContract]
public sealed class DetailCollection : Collection<string> {}
С помощью этих двух классов вы можете сериализовать их множеством способов, отредактировать полученный XML-файл и десериализовать их по своему усмотрению.
классическая XML-сериализация
// serialize
var ser= new XmlSerializer(typeof(Test));
using(var fs= new StreamWriter(@"C:\testdata.xml"))
ser.Serialize(fs, TestObj);
// deserialize
using(var fs= new FileStream(@"C:\testdata.xml", FileMode.Open, FileAccess.Read, FileShare.Read))
Test test = (Test)ser.Deserialize(fs);
который отстой и глючит. Существует также сериализация Xaml:
// сериализация
var xaml = XamlServices.Save (тест);
// десериализация
var test2 = (Test) XamlServices.Load (XmlReader.Create (new StringReader (xaml)));
и DataContractSerializer / NetDataContractSerializer (один и тот же шаблон для обоих типов, один ориентирован на .NET, другой - нет)
// serialize
var ser= new NetDataContractSerializer();
using(var fs= new StreamWriter(@"C:\testdata.xml"))
ser.Serialize(fs, TestObj);
// deserialize
using(var fs= new FileStream(@"C:\testdata.xml", FileMode.Open, FileAccess.Read, FileShare.Read))
using (var xmlReader = new XmlTextReader(fs))
Test test = (Test)ser.ReadObject(xmlReader);
Я предпочитаю последние два по ряду причин. В вашем случае я бы предложил сериализацию xaml, как если бы вы установили сборку на Page и правильно использовали ваши пространства имен (xmlns) (вы увидите, что они определены при открытии сериализованного файла), вы будете получить intellisense в VS при редактировании файлов. Полезный.
Обратите внимание, что весь код является c # -подобным псевдокодом, и для корректной работы может потребоваться отладка / редактирование синтаксиса.