J'essaie d'enregistrer du code source C# dans la base de données. Fondamentalement, j'ai un RichTextBox que les utilisateurs peuvent taper leur code et l'enregistrer dans la base de données. Lorsque je copie et collez à partir de l'environnement Visual Studio, je souhaite conserver le formatage, etc. J'ai donc choisi d'enregistrer FlowDocuments Xaml dans la base de données et de le renvoyer au fichier RichTextBox.Document.WPF Richtextbox Comportement XamlWriter
Mes fonctions ci-dessous sérialisent et désérialisent le contenu du RTB.
private string GetXaml(FlowDocument document)
{
if (document == null) return String.Empty;
else{
StringBuilder sb = new StringBuilder();
XmlWriter xw = XmlWriter.Create(sb);
XamlDesignerSerializationManager sm = new XamlDesignerSerializationManager(xw);
sm.XamlWriterMode = XamlWriterMode.Expression;
XamlWriter.Save(document, sm);
return sb.ToString();
}
}
private FlowDocument GetFlowDocument(string xamlText)
{
var flowDocument = new FlowDocument();
if (xamlText != null) flowDocument = (FlowDocument)XamlReader.Parse(xamlText);
// Set return value
return flowDocument;
}
Cependant lorsque je tente de serialise et deserialise le code suivant, je note ce comportement incorrect (?)
using System;
public class TestCSScript : MarshalByRefObject
{
}
sérialisé XAML est
using System; public class TestCSScript : MarshalByRefObject {}{ }
Notez que le la nouveau jeu de "{}"
Que suis-je? oing tort ici ... Merci d'avance pour l'aide!
Cela me semble un bug - je l'ai signalé à Microsoft Connect: https://connect.microsoft.com/WPF/feedback/details/563677/wpf-paragraphs-with-a-leading-curly- bracket-do-not-xamlwriter-save-correctement –
merci - heureux de savoir que je ne suis pas seul – Krishna