WPF RichTextBox Xamlwriter поведение
-
26-09-2019 - |
Вопрос
Я пытаюсь сохранить код исходного кода C # в базу данных. По сути, у меня есть RichTextBox, которые пользователи могут ввести свой код и сохранить это в базе данных.
Когда я копирую и вставку из среды Visual Studio, я хотел бы сохранить формирующиеся и т. Д., чтобы я решил сохранить FlowDocuments Xaml в базу данных и установить это обратно в RichTextBox.document.
Мои ниже двух функций сериала и десериализуют содержимое 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;
}
Однако, когда я пытаюсь сериал и десертировать следующий код, я замечаю это неверное (?) Поведение
using System;
public class TestCSScript : MarshalByRefObject
{
}
Сериализованный XAML есть
using
System;
public
class TestCSScript :
MarshalByRefObject
{}{
}
Обратите внимание на новый набор «{}»
Что я делаю не так ... заранее спасибо за помощь!
Решение
Я ушел в отставку в запоздалое решение, но если кто-то из вас находит чистый, пожалуйста, опубликуйте его.
Я использовал заменить звонок StringBuilder, чтобы удалить нежелательные символы.
private string GetXaml(FlowDocument document)
{
if (document == null) return String.Empty;
else
{
StringBuilder sb = new StringBuilder();
using (XmlWriter xw = XmlWriter.Create(sb))
{
XamlDesignerSerializationManager sm = new XamlDesignerSerializationManager(xw);
sm.XamlWriterMode = XamlWriterMode.Expression;
XamlWriter.Save(document, sm);
}
sb.Replace("{}", "");
return sb.ToString();
}
}
У меня такое ощущение, что когда Xamlwriter встречает символ «{» - это нерешены, что в качестве выражения связывания. Интересно, что escape Sequence для этого персонажа.
Примечание - я попытался изменять
XamlWriterMode from XamlWriterMode.Expression to XamlWriterMode.Value
без радости.