FlowDocument XamlWriter保存 - 不保留选项卡

时间:2012-08-22 20:45:52

标签: c# wpf .net-4.0 whitespace flowdocument

我使用XamlWriter.SaveXamlReader.Load将FlowDocument序列化和反序列化为字节数组以存储它:

private static byte[] FlowDocumentToByteArray(FlowDocument flowDocument)
{
    using (var stream = new MemoryStream())
    {
        XamlWriter.Save(flowDocument, stream);
        stream.Position = 0;
        return stream.ToArray();
    }
}

private static FlowDocument FlowDocumentFromByteArray(byte[] bytes)
{
    using (var stream = new MemoryStream(bytes))
    {
        return (FlowDocument)XamlReader.Load(stream);
    }
}

但是我在空白保存方面遇到了麻烦。以下测试失败:

[TestMethod]
public void FlowDocumentTabsNoBackground()
{
    var flowDocument = new FlowDocument();

    var paragraph = new Paragraph();
    paragraph.Inlines.Add(new Run("\t"));
    paragraph.Inlines.Add(new Run("a"));
    flowDocument.Blocks.Add(paragraph);

    byte[] bytes = FlowDocumentToByteArray(flowDocument);

    FlowDocument flowDocumentOut = FlowDocumentFromByteArray(bytes);

    var textRange = new TextRange(flowDocumentOut.ContentStart, 
        flowDocumentOut.ContentEnd);
    Assert.IsTrue(textRange.Text.StartsWith("\t"));
}

但是这个测试通过了:

[TestMethod]
public void FlowDocumentTabsWithBackground()
{
    var flowDocument = new FlowDocument();

    var paragraph = new Paragraph();
    paragraph.Inlines.Add(new Run("\t"));
    paragraph.Inlines.Add(new Run("a")
        {
            Background = new SolidColorBrush(Color.FromArgb(255, 255, 255, 255))
        }
    );
    flowDocument.Blocks.Add(paragraph);

    byte[] bytes = FlowDocumentToByteArray(flowDocument);

    FlowDocument flowDocumentOut = FlowDocumentFromByteArray(bytes);

    var textRange = new TextRange(flowDocumentOut.ContentStart, 
        flowDocumentOut.ContentEnd);
    Assert.IsTrue(textRange.Text.StartsWith("\t"));
}

为什么标签不能通过序列化/反序列化循环,为什么在段落的其中一个运行中添加背景颜色有帮助?

0 个答案:

没有答案