Отказ от ответственности : я никогда не использовал 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
, которое можно использовать для идентификации этого принтера.