Procedura: richiamare una finestra di dialogo di stampa

Per consentire la stampa dall'applicazione, è possibile semplicemente creare e aprire un oggetto PrintDialog.

Esempio

Il controllo PrintDialog rappresenta un singolo punto di ingresso per l'UI, la configurazione e l'invio di processi XPS. Per il controllo, semplice da utilizzare, si possono creare istanze utilizzando markup Extensible Application Markup Language (XAML) o codice. Nell'esempio riportato di seguito viene illustrato come creare istanze, aprire il controllo nel codice e stampare. Viene inoltre illustrato come verificare che la finestra di dialogo consenta all'utente la possibilità di impostare un intervallo specifico di pagine. Nell'esempio di codice si presuppone la presenza di un file FixedDocumentSequence.xps nella radice dell'unità C.

        Private Sub InvokePrint(ByVal sender As Object, ByVal e As RoutedEventArgs)
                ' Create the print dialog object and set options
                Dim pDialog As New PrintDialog()
                pDialog.PageRangeSelection = PageRangeSelection.AllPages
                pDialog.UserPageRangeEnabled = True

                ' Display the dialog. This returns true if the user presses the Print button.
                Dim print? As Boolean = pDialog.ShowDialog()
                If print = True Then
                    Dim xpsDocument As New XpsDocument("C:\FixedDocumentSequence.xps", FileAccess.ReadWrite)
                    Dim fixedDocSeq As FixedDocumentSequence = xpsDocument.GetFixedDocumentSequence()
                    pDialog.PrintDocument(fixedDocSeq.DocumentPaginator, "Test print job")
                End If
        End Sub
private void InvokePrint(object sender, RoutedEventArgs e)
    {
        // Create the print dialog object and set options
        PrintDialog pDialog = new PrintDialog();
        pDialog.PageRangeSelection = PageRangeSelection.AllPages;
        pDialog.UserPageRangeEnabled = true;

        // Display the dialog. This returns true if the user presses the Print button.
        Nullable<Boolean> print = pDialog.ShowDialog();
        if (print == true)
        {
            XpsDocument xpsDocument = new XpsDocument("C:\\FixedDocumentSequence.xps", FileAccess.ReadWrite);
            FixedDocumentSequence fixedDocSeq = xpsDocument.GetFixedDocumentSequence();
            pDialog.PrintDocument(fixedDocSeq.DocumentPaginator, "Test print job");
        }
    }

Una volta aperta la finestra di dialogo, gli utenti potranno scegliere tra le stampanti installate sul computer. Sarà possibile anche selezionare Microsoft XPS Document Writer (la pagina potrebbe essere in inglese) per creare un file XML Paper Specification (XPS) anziché stampare.

NotaNota

Il controllo System.Windows.Controls.PrintDialog di WPF, illustrato in questo argomento, non deve essere confuso con il componente System.Windows.Forms.PrintDialog di Windows Forms.

In teoria, è possibile utilizzare il metodo PrintDocument senza mai aprire la finestra di dialogo. Infatti il controllo può essere utilizzato come un componente di stampa non visibile. Ma per motivi di prestazioni, sarebbe meglio utilizzare il metodo AddJob o uno dei molti metodi Write e WriteAsync di XpsDocumentWriter. Per ulteriori informazioni su questo argomento, vedere Procedura: stampa di file XPS a livello di codice e .

Vedere anche

Riferimenti

PrintDialog

Concetti

Documenti in WPF

Cenni preliminari sulla stampa

Altre risorse

Microsoft XPS Document Writer