2011-10-23 45 views
2

我的XAML代碼文件,並想讀在運行時文件,並在我的形式執行這個如何執行的XAML運行時間

或有TextBox控件和編寫XAML代碼到文本框,然後按

按鈕此XAML代碼執行。

這是可能的嗎?

謝謝。

回答

2

以下是一些用於序列化XAML對象的靜態方法。您只需使用XamlSerializer.Deserialize(string)即可在運行時使用有效的XAML文本創建XAML對象。

代碼:

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Data; 
using System.Diagnostics; 
using System.Text; 
using System.Xml; 
using System.Windows.Markup; 
using System.IO; 
using System.Windows.Markup.Primitives; 
using System.Reflection; 

public class XamlSerializer 
{ 
    static internal string Serialize(object toSerialize) 
    { 
     XmlWriterSettings settings = new XmlWriterSettings(); 
     settings.Indent = true; 
     settings.NewLineOnAttributes = true; 
     settings.ConformanceLevel = ConformanceLevel.Auto; 
     StringBuilder sb = new StringBuilder(); 
     XmlWriter writer = XmlWriter.Create(sb, settings); 
     XamlDesignerSerializationManager manager = new XamlDesignerSerializationManager(writer); 
     manager.XamlWriterMode = XamlWriterMode.Expression; 
     XamlWriter.Save(toSerialize, manager); 

     return sb.ToString(); 
    } 
    static internal object Deserialize(string xamlText) 
    { 
     XmlDocument doc = new XmlDocument(); 
     doc.LoadXml(xamlText); 
     return XamlReader.Load(new XmlNodeReader(doc)); 
    } 
}