2010-12-20 11 views

Respuesta

6

Aquí es una buena discusión de cómo serializar WPF:

http://statestreetgang.net/post/2008/06/XAML-Serialization-FTW.aspx


/// <summary> 
/// Serializes the specified object 
/// </summary> 
/// <param name="toSerialize">Object to serialize.</param> 
/// <returns>The object serialized to XAML</returns> 
private string Serialize(object toSerialize) 
{ 
    XmlWriterSettings settings = new XmlWriterSettings(); 
    // You might want to wrap these in #if DEBUG's 
    settings.Indent = true; 
    settings.NewLineOnAttributes = true; 
    // this gets rid of the XML version 
    settings.ConformanceLevel = ConformanceLevel.Fragment; 
    // buffer to a stringbuilder 
    StringBuilder sb = new StringBuilder(); 
    XmlWriter writer = XmlWriter.Create(sb, settings); 
    // Need moar documentation on the manager, plox MSDN 
    XamlDesignerSerializationManager manager = new XamlDesignerSerializationManager(writer); 
    manager.XamlWriterMode = XamlWriterMode.Expression; 
    // its extremely rare for this to throw an exception 
    XamlWriter.Save(toSerialize, manager); 

    return sb.ToString(); 
} 

/// <summary> 
/// Deserializes an object from xaml. 
/// </summary> 
/// <param name="xamlText">The xaml text.</param> 
/// <returns>The deserialized object</returns> 
/// <exception cref="XmlException">Thrown if the serialized text is not well formed XML</exception> 
/// <exception cref="XamlParseException">Thrown if unable to deserialize from xaml</exception> 
private object Deserialize(string xamlText) 
{ 
    XmlDocument doc = new XmlDocument(); 
    // may throw XmlException 
    doc.LoadXml(xamlText); 
    // may throw XamlParseException 
    return XamlReader.Load(new XmlNodeReader(doc)); 
} 
+0

+1 Esto es exactamente lo que necesito! ¡Gracias! –

+0

¡El enlace en esta respuesta ya no existe! – TheBoyan

Cuestiones relacionadas