2009-02-26 14 views
2

ich die WPF Documentviewer Steuerung verwendet habe, wie so ein XPS-Dokument anzuzeigen:Wie lege ich den Namen des Druckauftrags fest, wenn ich das DocumentViewer-Steuerelement verwende?

viewer.Document = xpsDocument.GetFixedDocumentSequence(); 

Wenn die Drucktaste in dem Dokument-Viewer ist in Ordnung, alles druckt geklickt hat, aber der Name des Druckauftrages ist System.Windows .Documents.FixedDocumentSequence, die weniger als ideal ist.

Wie lege ich den Namen des Druckauftrags fest?

Ich weiß mit PrintDialog.PrintDocument() können Sie mir den Namen gesetzt, aber ich kann nicht sehen, wie es zu tun, um das Documentviewer-Steuerelement.

Antwort

3

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 dies dem 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 zur Kenntnis. Die PreviewExecuted-Methode tritt nicht auf, wenn das Ereignis "Executed" nicht gebunden ist. Ich weiß nicht warum. jedoch

+0

Das hat super funktioniert. Vielen Dank. – Eternal21

3

hatte ich das gleiche Problem mit dem Befehl Drucken Überschreiben nicht in meiner Situation funktionieren würde, so dass ich eine andere Arbeit gefunden um das funktioniert genauso gut

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); 
    } 
} 
Verwandte Themen