Boîte de dialogue d'impression et d'impression présentation boîte de dialogue pour WPF
Est-il une zone de dialogue imprimer pour WPF qui est combiné avec une boîte de dialogue aperçu avant impression dans WPF, comme Google Chrome ou Word?
En ce moment j'utilise un le dialogue aperçu avant impression des formulaires Windows. J'ai également essayer d'utiliser WPF version de celui-ci. Mais WPF n'a pas de PrintPreviewDialog
ou PrintPrewiewControl
. C'est mon code:
//To the top of my class file:
using Forms = System.Windows.Forms;
//in a methode on the same class:
PageSettings setting = new PageSettings();
setting.Landscape = true;
_document = new PrintDocument();
_document.PrintPage += _document_PrintPage;
_document.DefaultPageSettings = setting ;
Forms.PrintPreviewDialog printDlg = new Forms.PrintPreviewDialog();
printDlg.Document = _document;
printDlg.Height = 500;
printDlg.Width = 200;
try
{
if (printDlg.ShowDialog() == Forms.DialogResult.OK)
{
_document.Print();
}
}
catch (InvalidPrinterException)
{
MessageBox.Show("No printers found.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
J'ai aussi cherché un package NuGet mais rien trouvé de vraiment bon.
OriginalL'auteur H. Pauwelyn | 2015-04-27
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez faire, c'est créer un
xpsDocument
de le contenu que vous souhaitez imprimer (unflowDocument
) et l'utilisation queXpsDocument
de prévisualiser le contenu, par exemple, supposons que vous disposez des éléments suivants Xaml, avec unflowDocument
que vous souhaitez imprimer son contenu :la flowDocument de l'Échantillon est de Wpf tutoriels site
le bouton imprimer Cliquez sur gestionnaire d'événement devrait ressembler à ceci :
donc, ici, vous êtes principalement en :
FlowDocument
contenu dans ce fichier,XpsDocument
à laPrintWindow
dans lequel vous allezla poignée de la fenêtre d'aperçu et l'impression des actions,
ici comment la
PrintWindow
ressemble :et le code-behind :
le résultat final ressemble à quelque chose comme ceci
Ps: pour utiliser XpsDocument vous devez ajouter une référence à Système.De Windows.Xps.L'emballage de l'espace de noms
Donc il n'y a aucun moyen de le faire avec un standardisé de la boîte de dialogue d'impression?
C'est bon, sans doute préférable d'utiliser un flux de mémoire plutôt que d'un fichier XPS rendu... (supprime la dépendance sur le système de fichiers)
OriginalL'auteur SamTheDev
Que vos besoins peuvent être obtenus dans un certain nombre de façons, par exemple, vous pouvez
utiliser le
PrintDialog
classe. Le site web MSDN suivant les pages contient des descriptions ainsi que des exemples de code:Alternativement, il peut être réalisé via C# ,par exemple, considérez le code suivant:
Ce qu'il fait: en fait, elle imprime le contenu d'un visuel dans un document XPS. Puis il charge les "imprimés" XPS document et l'affiche dans un très simple fichier XAML qui est stockée sous forme de chaîne de caractères, plutôt que comme un module séparé, et chargé dynamiquement à l'exécution. La Fenêtre qui s'affiche a l'DocumentViewer: les boutons d'impression, réglez-à-max-page-largeur, et ainsi de suite.
J'ai également ajouté un peu de code pour masquer la zone de Recherche. Voir cette réponse de WPF: Comment puis-je supprimer le "searchbox" dans un DocumentViewer? pour la façon dont je l'ai fait.
L'effet est comme ceci:
le texte d'alt http://i48.tinypic.com/2hzkfat.jpg
La XpsDocument peut être trouvé dans la ReachFramework dll et l'XpsDocumentWriter peut être trouvé dans le Système.L'impression dll à la fois de ce qui doit être ajouté comme des références au projet
PrintPreviewDialog
et unPrintPreviewDialog
? Comme Google Chrome ou Word.ce qui est _parent et fdsv1
Le WPF
PrintDialog
classe de permettre aperçus?OriginalL'auteur Noam M