/ / Silverlight Printing Barre de progression - Silverlight, Silverlight-4.0, Impression

Barre d'impression occupé par Silverlight - silverlight, silverlight-4.0, impression

J'utilise Silverlight 4 pour imprimer mais je voudrais une sorte de barre de progression ou un indicateur occupé.

J’ai essayé d’utiliser une barre de progression, mais cela ne fonctionne pas vraiment. Les deux problèmes que j’ai rencontrés sont les suivants:

  • la barre de progression n’indique pas la progression, j’ai IsIndeterminate = True, mais elle ne s’anime pas au début de l’impression (le bouton Imprimer de la boîte de dialogue Imprimer est activé)
  • la visibilité de la barre de progression n'est pas définie surle bon moment, selon l'endroit où je mets le code pour définir la visibilité, il s'affiche soit trop tôt (avant de cliquer sur l'impression) ou trop tard (après que l'impression a fonctionné pendant un certain temps)

Je devine, mais je pense que la raison de ce qui précède est que, lorsque la boîte de dialogue Imprimer est affichée, Silverlight a transféré le contrôle au système d’exploitation (??).

J'ai essayé d'utiliser un invocateur de répartiteur, mais une exception de sécurité est générée (la boîte de dialogue ne peut être affichée qu'à partir d'un clic de l'utilisateur).

Des idées sur la façon de traiter l'un ou l'autre des problèmes ci-dessus?

Merci.

Réponses:

1 pour la réponse № 1

Créez un BusyIndicator dans votre XAML, il fait partie de la boîte à outils Silverlight. Ensuite, lors de l’événement BeginPrint, définissez IsBusy de BusyIndicator sur True. Également pendant EndPrint, redéfinissez IsBusy sur false.

  var docToPrint = new PrintDocument();

docToPrint.BeginPrint += (s, args) =>
{
MyBusyIndicator.IsBusy = true;
MyBusyIndicator.BusyContent = "Printing...";
};

docToPrint.PrintPage += (s, args) =>
{
args.PageVisual = this.MainCanvas;
};

docToPrint.EndPrint += (s, args) =>
{
MyBusyIndicator.IsBusy = false;
MyBusyIndicator.BusyContent = "";
};