2

有没有人找到将 FlowDocument 保存为 BAML 或其他压缩格式的方法?我可以导入带有图像的 XML 来创建新的 FlowDocument:

<TextRange class instance>.Load(fs, DataFormats.Rtf)

但是,我还没有找到一种以“本机”压缩格式保存它的好方法。使用以下方法很容易生成未压缩的 XAML:

<TextRange class instance>.Save(fs, DataFormats.Xaml);

但是有没有任何编程方法可以将其保存为压缩格式?

如果没有现有方法,有谁知道在哪里可以找到编程 XAML 编译器?或者甚至只是 BAML 规范?我可以以编程方式生成一个嵌入 FlowDocument 的整个 XAML 窗口,但我仍然希望将 XAML 转换为 BAML 以加快加载时间。我正在使用相对较大的 rtf 文档,并且使用 DataFormats.Rtf 的转换时间很重要。

4

3 回答 3

1

我不认为这是可能的...... BamlWriter 被标记为内部,这有望很快开放!

不幸的是,我不知道任何 XAML 编译器

于 2008-10-07T06:12:29.713 回答
0

好吧,事实证明您可以在没有 GUI 的情况下运行 Visual C# 2008 Express。您也可以在编译之前通过代码修改最终程序名称。我相信你可以通过 API 来做到这一点,但这是我发现的 hack:

  1. 该程序的名称在 .csproj 中的 xml 标记中确定。
  2. 通过代码或批处理文件运行: "\Common7\IDE\vcsexpress" ".sln" /rebuild Release /projectconfig Release /out errors.txt

我喜欢在每次运行后检查并删除 errors.txt,以便更容易查看我是否获得了干净的构建。这并不理想,因为您必须在以这种方式使用的每台机器上安装完整的 Visual C# 2008 版本,但这是一种创建新可执行文件以以编程方式显示每个流文档的方法。此外,如果您的 XAML 中有错误,您可能会生成一个无法运行的程序。

请注意,BAML 格式不压缩文本,只压缩标签和其他“管道”。甚至 Margin 和 Padding 信息也以清晰的 ASCII 格式保存。这是由 end .exe 继承的,使文本在记事本或类似的部分中清晰可见。

于 2008-10-08T18:25:45.050 回答
0

XamlPackage 格式被压缩:

<TextRange class instance>.Save(fs, DataFormats.Xaml);
于 2008-11-26T13:45:33.053 回答