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.

War es hilfreich?

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);
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top