Question

Quelqu'un a-t-il trouvé un moyen de sauvegarder un FlowDocument au format BAML ou à un autre format compressé? Je peux importer du XML avec des images pour créer un nouveau FlowDocument:

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

Cependant, je n'ai pas trouvé de moyen efficace de l'enregistrer dans un format compressé "natif". XAML non compressé est facile à générer à l'aide de:

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

Mais existe-t-il une méthode de programmation permettant de l'enregistrer dans un format compressé?

S'il n'y a pas de méthode existante, est-ce que quelqu'un sait où trouver un compilateur XAML par programmation? Ou même simplement les spécifications BAML? Je pourrais générer par programme une fenêtre XAML entière avec le FlowDocument incorporé, mais je voudrais tout de même convertir le XAML en BAML pour des temps de chargement plus rapides. J'utilise des documents RTF relativement importants et le temps de conversion à l'aide de DataFormats.Rtf est significatif.

Était-ce utile?

La solution

Je ne pense pas que ce soit possible ... Le BamlWriter est marqué comme interne, cela devrait bientôt s'ouvrir!

Malheureusement, je ne connais aucun compilateur XAML

Autres conseils

Eh bien, il s’avère que vous pouvez exécuter Visual C # 2008 Express sans l’interface graphique. Et vous pouvez également modifier le nom du programme final via un code avant de le compiler. Je suis sûr que vous pouvez le faire via des API, mais voici le hack que j'ai trouvé:

  1. Le nom du programme est déterminé dans .csproj, dans la balise xml.
  2. Exécuter via le code ou le fichier de commandes: " \ Common7 \ IDE \ vcsexpress " " .sln " / rebuild Version / projectconfig Version / out errors.txt

J'aime examiner puis supprimer le fichier errors.txt après chaque exécution afin de voir plus facilement si j'ai une nouvelle version. Ce n'est pas idéal, car vous devez disposer d'une version complète de Visual C # 2008 sur chaque machine que vous utilisez de cette manière, mais c'est un moyen de créer un nouvel exécutable pour afficher chaque document de flux de manière programmatique. De plus, si vous avez une erreur dans votre code XAML, vous pouvez générer un programme qui ne fonctionnera pas.

Notez que le format BAML ne compresse pas le texte, mais uniquement les balises et autres "éléments de plomberie". Même les informations de marge et de remplissage sont sauvegardées en clair ASCII. Ceci est hérité par le fichier end .exe laissant le texte clairement visible dans les sections au bloc-notes ou similaire.

Le format XamlPackage est compressé:

<TextRange class instance>.Save(fs, DataFormats.Xaml);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top