目前,我正在为用户提供两个控件:保存和打印。当用户选择“保存”时,WPF显示的区域将打包并通过XpsDocumentWriter发送,并提示并鼓励用户签署新的xps文档。当用户选择“打印”时,PrintDialog.PrintVisual会将同一区域打印到用户选择的打印机上。

一切都很好,除了Microsoft XPS Document Writer是打印机的选择之一。有没有一种方法可以阻止或拦截用户对XPS文档编写器的选择,并将其发送到Save方法,以便我可以提示用户对xps文档进行签名?

最佳答案

免责声明:我以前从未使用过PrintDialog,但是看起来像这样可能会起作用:

System.Windows.Controls.PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
    PrintQueue selectedQueue = printDialog.PrintQueue;
    if (selectedQueue.Name == "Microsoft XPS Document Writer")
    {
        // Run your XPS save & sign code
    }
    else
    {
        // Run your printDialog.PrintVisual() code
    }
}


我真的不喜欢硬编码打印机名称(我认为它随语言设置而变化)。可能有一个更好的PrintQueue属性,可用于标识此打印机。

10-08 16:29