【问题标题】:Can I save a FlowDocument to BAML in a programmatic way?我可以以编程方式将 FlowDocument 保存到 BAML 吗?
【发布时间】:2008-10-06 19:41:10
【问题描述】:

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

【问题讨论】:

    标签: wpf visual-studio-2008 flowdocument


    【解决方案1】:

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

    很遗憾,我不知道任何 XAML 编译器

    【讨论】:

      【解决方案2】:

      好吧,事实证明您可以在没有 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 继承的,使文本在记事本或类似的部分中清晰可见。

      【讨论】:

        【解决方案3】:

        XamlPackage 格式被压缩:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-08
          • 2013-07-18
          • 2015-08-17
          • 2015-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多