Могу ли я сохранить FlowDocument в BAML программным способом? - PullRequest
2 голосов
/ 06 октября 2008

Кто-нибудь нашел способ сохранить FlowDocument как BAML или другой сжатый формат? Я могу импортировать XML с изображениями для создания нового FlowDocument:

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

Однако я не нашел хорошего способа сохранить его в «сжатом» формате. Несжатый XAML легко генерировать, используя:

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

Но есть ли какой-либо программный способ сохранить его в сжатом формате?

Если метода не существует, кто-нибудь знает, где найти программный компилятор XAML? Или даже только спецификации BAML? Я мог бы программно сгенерировать все окно XAML со встроенным FlowDocument, но я все же хотел бы преобразовать XAML в BAML для более быстрой загрузки. Я использую относительно большие документы RTF, и время конвертации с использованием DataFormats.Rtf значительно.

Ответы [ 3 ]

1 голос
/ 07 октября 2008

Не думаю, что это возможно ... BamlWriter помечен как внутренний, надеюсь, он скоро откроется!

К сожалению, я не знаю ни одного компилятора XAML

0 голосов
/ 26 ноября 2008

Сжатый формат XamlPackage:

<TextRange class instance>.Save(fs, DataFormats.Xaml);
0 голосов
/ 08 октября 2008

Что ж, получается, что вы можете запустить Visual C # 2008 Express без графического интерфейса. И вы можете изменить окончательное имя программы с помощью кода перед компиляцией. Я уверен, что вы можете сделать это через API, но вот хак, который я нашел:

  1. Имя программы определено в .csproj, в теге xml.
  2. Запустить через код или пакетный файл: "\ Common7 \ IDE \ vcsexpress" ".sln" / перестроить Release / projectconfig Release / out errors.txt

Мне нравится проверять, а затем удалять ошибки.txt после каждого запуска, чтобы было легче увидеть, получил ли я чистую сборку. Это не идеально, потому что вы должны иметь полностью купленную версию Visual C # 2008 на каждой машине, которую вы используете таким образом, но это способ создать новый исполняемый файл для отображения каждого потокового документа программным способом. Также, если у вас есть ошибка в вашем XAML, вы можете сгенерировать программу, которая не будет работать.

Обратите внимание, что формат BAML НЕ сжимает текст, только теги и прочую «сантехнику». Даже информация Margin и Padding сохраняется в чистом ASCII. Это наследуется концом .exe, оставляя текст четко видимым в разделах в блокноте или подобном.

...