How can i serialize xaml “Brush”?

前端 未结 1 820
借酒劲吻你
借酒劲吻你 2020-12-10 18:23

How can or what is best method to serialize System.Windows.Media.Brush ?

相关标签:
1条回答
  • 2020-12-10 18:45

    Here is a good discussion of how to serialize 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 讨论(0)
提交回复
热议问题