2008-10-06 89 views
2

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

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

不过,我还没有找到一个很好的方式将其保存在一个“天然”压缩格式。无压缩的XAML很容易生成使用:

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

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

如果没有现有的方法,是否有人知道在哪里可以找到一个编程式的XAML编译器?甚至只是BAML规格?我可以通过编程方式生成一个嵌入了FlowDocument的整个XAML窗口,但我仍然希望将XAML转换为BAML以加快载入时间。我使用的是相对较大的rtf文件,使用DataFormats.Rtf的转换时间非常重要。

回答

1

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

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

0

的嘛,原来你可以W/O的GUI运行Visual C#2008 Express的。你也可以在编译之前通过代码修改最终的程序名。我相信你可以通过API来做到这一点,但是我发现这里有一些破解:

  1. 该程序的名称是由.csproj在xml标记中确定的。
  2. 通过代码或批处理文件运行: “\ Common7 \ IDE \ vcsexpress” “的.sln”/重建发布/ projectconfig发布/出ERRORS.TXT

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

请注意,BAML格式不压缩文本,只有标签和其他'管道'。即使边距和填充信息也以清晰的ASCII码保存。这是由最后的.exe遗留下来的文本清晰可见的部分记事本或类似的。

0

的XamlPackage格式压缩:

<TextRange class instance>.Save(fs, DataFormats.Xaml); 
相关问题