首页 > 解决方案 > PrintDialog 改变 WPF 中的文化

问题描述

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

调试当前线程文化显示从“en-GB”到“”的更改,并且正如预期的那样,日期格式更改为 US mm/dd。

我一直没有成功找到这方面的任何信息,所以我希望 Hive 头脑可以提供帮助!

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

标签: c#wpfdate-formatcultureprintdialog

解决方案


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


推荐阅读