簡単な方法:
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();
}
注:オブジェクトグラフからXAMLを作成する
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;
}
:
var z = System.Windows.Markup.XamlReader.Parse(File.ReadAllText("XAMLFile1.xaml"));
(Turns out this does support XAML 2009 after all.)
ハードな方法が、あまりの依存関係を持ちます
- すべての名前空間を完全修飾します。名前空間だけでローカルアセンブリを見つけるのに問題があります。
- ContentPropertyAttributeの使用を検討してください。
- XAML 2009に関する有用な注意点:http://wpftutorial.net/XAML2009.html