Простой способ:
var z = System.Windows.Markup.XamlReader.Parse(File.ReadAllText("XAMLFile1.xaml"));
(Turns out this does support XAML 2009 after all.)
Трудный путь, но с меньшим количеством зависимостей:
var x = ParseXaml(File.ReadAllText("XAMLFile1.xaml"));
public static object ParseXaml(string xamlString)
{
var reader = new XamlXmlReader(XmlReader.Create(new StringReader(xamlString)));
var writer = new XamlObjectWriter(reader.SchemaContext);
while (reader.Read())
{
writer.WriteNode(reader);
}
return writer.Result;
}
Создание XAML из графа объекта:
public static string CreateXaml(object source)
{
var reader = new XamlObjectReader(source);
var xamlString = new StringWriter();
var writer = new XamlXmlWriter(xamlString, reader.SchemaContext);
while (reader.Read())
{
writer.WriteNode(reader);
}
writer.Close();
return xamlString.ToString();
}
Примечания:
- Полностью квалифицировать все пространства имен.Не удается найти локальные сборки только по пространству имен.
- Рассмотрите возможность использования ContentPropertyAttribute.
- Полезные примечания по XAML 2009: http://wpftutorial.net/XAML2009.html