일부 C# 소스 코드를 데이터베이스에 저장하려고합니다. 기본적으로 나는 사용자가 자신의 코드를 입력하고 데이터베이스에 저장할 수있는 RichTextBox 있습니다.WPF Richtextbox XamlWriter 동작
Visual Studio 환경에서 복사하여 붙여 넣을 때 formating 등을 보존하고 싶습니다. 그래서 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;
}
나는 다음과 같은 코드에는 직렬화 및 deserialise 할 때 그러나, 나는
using System;
public class TestCSScript : MarshalByRefObject
{
}
직렬화 된 XAML은
using System; public class TestCSScript : MarshalByRefObject {}{ }
공지 사항입니다이 잘못된 (?) 동작을 나타 납니까하여 "{}"의 새로운 세트
나는 무엇을 할까? 잘못된 여기에 ... 도움에 미리 감사드립니다!
나에게 버그처럼 보입니다. Microsoft Connect에서보고했습니다. https://connect.microsoft.com/WPF/feedback/details/563677/wpf-paragraphs-with-a-leading-curly- 브래킷 -하지 - xamlwriter - 저장 - 올바르게 –
감사합니다 - 내가 혼자가 아니란 것을 알게되어 기쁘다 – Krishna