Как сериализовать XAML как часть других простых XML-узлов? - PullRequest
0 голосов
/ 30 июня 2011

Я хочу сериализовать XAML и другую информацию о настройках приложения в одном файле настроек.Что-то вроде:

<root>
    <settings>
        ...
    </settings>
    <xaml_stuff>
        ...
    </xaml_stuff>
</root>

Я буду благодарен за любые указания, как элегантно выполнить это: у меня есть XamlWriter с одной стороны и другие пространства имен XML-API \ с другой, но я могу 'не могу найти способ соединить их вместе.

1 Ответ

1 голос
/ 30 июня 2011

Посмотрите, поможет ли это: http://msdn.microsoft.com/en-us/library/ms590446.aspx.

Из того, что я понимаю, сначала он сериализует его в XmlWriter, который затем можно использовать для добавления других не-xaml вещей

Редактировать: вотконкретный пример C # (с некоторыми изменениями того, что я сказал ранее) ...

XmlTextWriter w = new XmlTextWriter("test.xml", Encoding.UTF8);
w.WriteStartElement("root");
w.WriteAttributeString("xmlns", "x");
w.WriteStartElement("item1");
w.WriteEndElement();
w.WriteStartElement("item2");
w.WriteEndElement();

Button btn = new Button();
btn.Content = "Test Button";
btn.Width = 200;
btn.Height = 100;
btn.Foreground = Brushes.Green;

string buf = XamlWriter.Save(btn);
XmlTextReader reader = new XmlTextReader(new StringReader(buf));
reader.Read();
w.WriteNode(reader, true);

w.WriteEndElement();
w.Flush();
w.Close();

А вот содержимое файла, который он генерирует:

<root xmlns="x">
    <item1 />
    <item2 />
    <Button Foreground="#FF008000" Width="200" Height="100" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">Test Button</Button>
</root>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...