2009-04-23 13 views
2

コントロールから基礎となるxamlを抽出する方法はありますか?基礎となるXamlを抽出する方法はありますか?

IE。私はfooBoxという名前のテキストボックスを持っています。実行時にテキストボックスを表すテキストボックスからxamlを戻すことはできますか?

答えて

3

は、これはあなたに(バックコントロールにコントロールからXAMLへの)完全なライフサイクルを示しています。 あなたが見ることができるように、

string s = XamlWriter.Save(value); 

は、あなたが気にかもしれない興味深い部分です。

/// <summary> 
    /// Clones a given UIElement. Please note that any events, animations, etc 
    /// on the source item may not carry over to the cloned object. 
    /// </summary> 
    /// <param name="value">UIElement to clone.</param> 
    /// <returns>A shallow clone of the source element.</returns> 
    public static UIElement CloneUIElement(UIElement value) 
    { 
     if (value == null) 
     { 
      return null; 
     } 

     string s = XamlWriter.Save(value); 
     StringReader stringReader = new StringReader(s); 
     XmlReader xmlReader = XmlTextReader.Create(stringReader, new XmlReaderSettings()); 
     return (UIElement)XamlReader.Load(xmlReader); 
    } 
+0

これは完璧に働きました。そして非常に速かった。ありがとう! – JRobbers

+1

これはWPFでのみ機能します。 Silverlightではありません。 :( – Jason

1

はSilverlightのために、私はデビッド・ポーリングによって作成されたSilverlight xaml serializer呼ばロブRelyeaによってthis blog post渡って走りました。デイヴィッド・ポールの巨大な名声。 (Downloads Page)。

使用

UiXamlSerializer uxs = new UiXamlSerializer(); 
string text = uxs.Serialize(this.gridToSerialize); 
関連する問題