Могу ли я сохранить FlowDocument в BAML программным способом?

StackOverflow https://stackoverflow.com/questions/175858

Вопрос

Кто-нибудь нашел способ сохранить 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 является значительным.

Это было полезно?

Решение

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

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

Другие советы

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

<Ол>
  • Имя программы определяется в .csproj в теге xml.
  • Запуск через код или пакетный файл: " \ Common7 \ IDE \ vcsexpress " & Quot; .sln & Quot; / rebuild Release / projectconfig Release / out errors.txt
  • Мне нравится проверять, а затем удалять ошибки. текст после каждого запуска, чтобы было легче увидеть, что я получил чистую сборку. Это не идеально, потому что вы должны иметь полностью купленную версию Visual C # 2008 на каждой машине, которую вы используете таким образом, но это способ создать новый исполняемый файл для отображения каждого потокового документа программным способом. Также, если у вас есть ошибка в вашем XAML, вы можете сгенерировать программу, которая не будет работать.

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

    Формат XamlPackage сжат:

    <TextRange class instance>.Save(fs, DataFormats.Xaml);
    
    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top