2011-02-18 51 views
2

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

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

回答

2

免责声明:我从来没有使用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更好的属性,您可以用它来识别此打印机。

+1

请尝试selectedQueue.QueueDriver.Name - 它是打印机驱动程序名称,也是“Microsoft XPS Document Writer”。打印机名称可以(很容易地)改变,但从我看到的驱动程序名称不能改变(毕竟这是它的驱动程序)。 – 2012-04-12 14:25:58