PrintDialog 改变 WPF 中的文化

PrintDialog altering culture in WPF

我们目前是 WPF 中使用标准打印对话框的打印方法。打印后我们的安全令牌开始出现问题。调试显示文化是 en-GB,日期格式是 dd/MM/yyyy。在 dialog.PrintDocument 行之后,从 DateTime.Now 返回的日期格式更改为 mm/dd/yyyy?

调试当前线程区域性显示从 'en-GB' 到 '' 的变化,并且正如预期的那样,日期格式更改为美国 mm/dd。

我一直未能找到有关这方面的任何信息,所以我希望 Hive mind 可以提供帮助!

void PrintPdf_Click(object sender, RoutedEventArgs e)
{ 
    CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture; 
    PrintDialog dialog = new PrintDialog(); 

    if (dialog.ShowDialog() != true) 
        return; 
    Console.WriteLine(DateTime.Now); 
    dialog.PrintDocument(_pdfDocumentView.PrintDocument.DocumentPaginator, "Print"); 
    Console.WriteLine(DateTime.Now); 
    Thread.CurrentThread.CurrentCulture = currentCulture; 
    Console.WriteLine(DateTime.Now); 
}

问题出在 PrintDocument 的 Syncfusion 属性 访问器上。它在里面做的第一件事就是将当前文化更改为不变!之后将其设置回去是唯一的解决方案,因为此时无法启动新线程。