2011-10-23 39 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)); 
    } 
}