2011-02-18 61 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