Pregunta

¿Alguien ha encontrado una manera de guardar un FlowDocument como BAML u otro formato comprimido? Puedo importar XML con imágenes para crear un nuevo FlowDocument:

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

Sin embargo, no he encontrado una buena manera de guardarlo en un formato comprimido 'nativo'. XAML sin comprimir es fácil de generar usando:

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

¿Pero hay algún método programático para guardarlo en un formato comprimido?

Si no existe un método, ¿alguien sabe dónde encontrar un compilador XAML programático? ¿O incluso solo las especificaciones de BAML? Podría generar mediante programación una ventana XAML completa con el FlowDocument incorporado, pero aún así me gustaría convertir el XAML en BAML para tiempos de carga más rápidos. Estoy usando documentos rtf relativamente grandes y el tiempo de conversión con DataFormats.Rtf es significativo.

¿Fue útil?

Solución

No creo que sea posible ... ¡El BamlWriter está marcado como interno, espero que esto se abra pronto!

Lamentablemente, no conozco ningún compilador XAML

Otros consejos

Resulta que puede ejecutar Visual C # 2008 Express sin la GUI. Y puede modificar el nombre final del programa a través del código antes de compilar también. Estoy seguro de que puedes hacerlo a través de las API, pero aquí está el truco que encontré:

  1. El nombre del programa se determina en .csproj, en la etiqueta xml.
  2. Ejecutar a través de código o archivo por lotes: " \ Common7 \ IDE \ vcsexpress " " .sln " / rebuild Release / projectconfig Release / out errors.txt

Me gusta examinar y luego eliminar los errores.txt después de cada ejecución para que sea más fácil ver si tengo una versión limpia. Esto no es ideal porque debe tener una versión comprada completa de Visual C # 2008 en cada máquina que use de esta manera, pero es una forma de crear un nuevo ejecutable para mostrar cada documento de flujo de una manera programática. Además, si tiene un error en su XAML, puede generar un programa que no se ejecute.

Tenga en cuenta que el formato BAML NO comprime el texto, solo las etiquetas y otras 'tuberías'. Incluso la información de Margen y relleno se guarda en claro ASCII. Esto es heredado por el .exe final, dejando el texto claramente visible en las secciones a bloc de notas o similar.

El formato del paquete Xaml está comprimido:

<TextRange class instance>.Save(fs, DataFormats.Xaml);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top