我可以以编程方式将FlowDocument保存到BAML吗?

时间:2008-10-06 19:41:11

标签: wpf visual-studio-2008 flowdocument

有没有人找到将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的转换时间很重要。

3 个答案:

答案 0 :(得分:1)

我认为不可能...... BamlWriter标记为内部,希望很快就会开放!

我不幸地不知道任何XAML编译器

答案 1 :(得分:0)

嗯,事实证明你可以用GUI运行Visual C#2008 Express。您也可以在编译之前通过代码修改最终的程序名称。我相信你可以通过API来做到这一点,但这是我发现的黑客攻击:

  1. 程序的名称在.csproj中的xml标记中确定。
  2. 通过代码或批处理文件运行:“\ Common7 \ IDE \ vcsexpress”“。slln”/ rebuild Release / projectconfig Release / out errors.txt
  3. 我喜欢在每次运行后检查然后删除errors.txt,以便更容易看到我是否有一个干净的构建。这并不理想,因为您必须在每台使用这种方式的计算机上安装完整版本的Visual C#2008,但这是一种创建新的可执行文件以便以编程方式显示每个流文档的方法。此外,如果您的XAML中有错误,您可能会生成一个无法运行的程序。

    请注意,BAML格式不压缩文本,仅压缩标记和其他“管道”。甚至边距和填充信息也以明文ASCII格式保存。这是由末尾.exe继承的,文本在记事本或类似的部分中清晰可见。

答案 2 :(得分:0)

压缩XamlPackage格式:

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