WPFのRichTextBox XamlWriterの挙動
-
26-09-2019 - |
質問
私はデータベースにいくつかのC#のソースコードを保存しようとしています。基本的に私は、ユーザーが自分のコードを入力して、データベースにあることを保存することができ、リッチテキストボックスを持っています。
私はコピーして、Visual Studioの環境から貼り付けるとき、私は、データベースにFlowDocuments XAMLを保存し、RichTextBox.Documentにこのバックを設定することを選択したのでは、私は整形などを維持したいと思います。
私の2つの機能のシリアライズ以下とRTBの内容deserialise。
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
{}{
}
注意の新しいセット "{}"
は、私がここで間違って何をやっている...感謝を事前に助けを求めて!
解決
私が今の遅刻溶液に辞任しましたが、あなたがたのうち、きれいなものを見つけた場合、それを投稿してください。
私は、望ましくない文字を削除するための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の出会いは、「{」の文字がするとき - それはその結合式としてintreprets。私は、エスケープシーケンスがこの文字のためにあるのだろうか。
注 - 私は
を変更してみましたXamlWriterMode from XamlWriterMode.Expression to XamlWriterMode.Value
無喜びと