2011-07-20 3 views
0

さて、ここで私がしたいことがあります。GUI以外のXAMLファイルを解析するにはどうすればよいですか?

  1. は、それは次のようになりますXAML 2009を使用して、「設定ファイル」を作成します。

    <TM:Configuration 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:tm="clr-namespace:Test.Monkey;assembly=Test.Monkey" 
    > 
        <TM:Configuration.TargetFile>xxxx</TM:Configuration.TargetFile> 
    <TM:Configuration 
    
  2. は、オブジェクトグラフを得るためには、実行時にこのファイルを解析します。

答えて

0

簡単な方法:

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.) 

ハードな方法が、あまりの依存関係を持ちます

  1. すべての名前空間を完全修飾します。名前空間だけでローカルアセンブリを見つけるのに問題があります。
  2. ContentPropertyAttributeの使用を検討してください。
  3. XAML 2009に関する有用な注意点:http://wpftutorial.net/XAML2009.html
関連する問題