Procedura: richiamare una finestra di dialogo di stampa

Per fornire la possibilità di stampare dall'applicazione, è sufficiente creare e aprire un PrintDialog oggetto.

Esempio

Il PrintDialog controllo fornisce un singolo punto di ingresso per l'invio di processi XPS, configurazione e interfaccia utente. Il controllo è facile da usare e può essere creata un'istanza usando markup XAML (Extensible Application Markup Language) o codice. Nell'esempio seguente viene illustrato come creare un'istanza e aprire il controllo nel codice e come stamparlo. Viene inoltre illustrato come assicurarsi che la finestra di dialogo consentirà all'utente di impostare un intervallo specifico di pagine. Il codice di esempio presuppone che sia presente un file FixedDocumentSequence.xps nella radice dell'unità C: .

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");
        }
    }
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

Una volta aperta la finestra di dialogo, gli utenti potranno selezionare le stampanti installate nel computer. Avranno anche la possibilità di selezionare Microsoft XPS Document Writer per creare un file XPS (XML Paper Specification) invece di stampare.

Nota

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

In senso stretto, è possibile usare il PrintDocument metodo senza aprire mai il dialogo. In tal senso, il controllo può essere utilizzato come componente di stampa non visualizzato. Tuttavia, per motivi di prestazioni, sarebbe preferibile usare il AddJob metodo o uno dei molti Write metodi e WriteAsync di XpsDocumentWriter. Per altre informazioni, vedere Stampare file XPS a livello di codice.

Vedi anche