Wie kann ich den Namen des Druckauftrags, wenn Document Steuerung mit?
-
09-09-2019 - |
Frage
Ich habe mit dem WPF Documentviewer-Steuerelement ein XPS-Dokument wie so angezeigt werden:
viewer.Document = xpsDocument.GetFixedDocumentSequence();
Wenn die Drucktaste in dem Dokument-Viewer alles druckt in Ordnung geklickt wird, aber der Name des Druckauftrages ist System.Windows.Documents.FixedDocumentSequence, die weniger als ideal ist.
Wie kann ich den Namen des Druckauftrags festgelegt?
Ich weiß mit PrintDialog.PrintDocument () können Sie mir den Namen gesetzt, aber ich kann nicht sehen, wie es zu tun, um die Documentviewer-Steuerelement.
Lösung
Ich fand eine Lösung.
Fügen Sie diese auf dem XAML
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.Print" PreviewExecuted="CommandBinding_PreviewExecuted" Executed="CommandBinding_Executed" />
</Window.CommandBindings>
Und das auf den Code hinter
private void CommandBinding_PreviewExecuted(object sender, ExecutedRoutedEventArgs e)
{
PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == true)
{
dialog.PrintDocument(Document.DocumentPaginator, "Print Job Title");
}
}
private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
//needed so that preview executed works
}
Ein paar Dinge Zettel. Die PreviewExecuted Methode geschieht nicht, wenn das Exectued Ereignis nicht gebunden ist. Sie wissen nicht, warum.
Andere Tipps
Ich hatte jedoch das gleiche Problem des Überschreiben den Druckbefehls würde in meiner Situation nicht arbeiten, so fand ich eine andere Arbeit um, die ebenso gut funktioniert
internal class MyDocumentViewer : DocumentViewer
{
public string JobTitle { get; set; }
protected override void OnPrintCommand()
{
PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == true)
dialog.PrintDocument(Document.DocumentPaginator, JobTitle);
}
}