سؤال

حاليا أقدم للمستخدم مع عنصر تحكم: احفظ وطباعة.عندما يختار المستخدم حفظ، يتم تعبئتها منطقة عرض WPF وإرسالها من خلال كاتب XPSDocument ويتم مطالبة المستخدم وتشجيعه على توقيع مستند XPS الجديد.عندما يختار المستخدم الطباعة، تتم طباعة PrintDialog.printViSual تلك المنطقة نفسها في الطابعة المحددة للمستخدم.

كل شيء جيد وجيد، باستثناء كاتب مستند Microsoft XPS هو أحد الخيارات للطابعات.هل هناك طريقة لمنع أو اعتراض اختيار المستخدم من كاتب مستند XPS وإرسالها إلى طريقة الحفظ حتى أتمكن من مطالبة المستخدم بتوقيع مستند XPS؟

هل كانت مفيدة؟

المحلول

Disclaimer: I've never used PrintDialog before, but it looks like something like this might work:

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
    }
}

I don't really like having the printer name hard-coded (I assume it varies with language settings). Possibly there is a better property of PrintQueue that you can use to identify this printer.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top