在运行时更改系统日期格式时更新 DatePicker 中的日期格式

Posted

技术标签:

【中文标题】在运行时更改系统日期格式时更新 DatePicker 中的日期格式【英文标题】:Updating the date format in a DatePicker when the system date format is changed at runtime 【发布时间】:2012-05-23 08:37:58 【问题描述】:

我正在 WPF 应用程序中使用 DatePicker。我想把DatePicker的日期格式改成系统日期格式。

这是邮件窗口:

<Window x:Class="DateTimeDemo.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <StackPanel>
        <Button x:Name="Btn" Width="100" Click="Btn_Click">Click</Button>
    </StackPanel>
</Window>

使用以下代码打开子窗口:

private void Btn_Click(object sender, RoutedEventArgs e)

    ChiildWindow Cw = new ChiildWindow();
    Cw.ChildDatePicker.SelectedDate = DateTime.Now;
    Cw.ShowDialog();
    Cw.Focus();

这是子窗口,它只包含一个DatePicker

<Window x:Class="DateTimeDemo.ChiildWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="ChiildWindow" Height="300" Width="300">
    <StackPanel>
        <DatePicker x:Name="ChildDatePicker"/>
    </StackPanel>
</Window>

当我打开子窗口时,格式取自系统区域性,但如果我在窗口打开后从控制面板更改系统日期格式,则格式不会改变。

我在 ChildWindow.xaml.cs 文件中尝试了以下代码:

Thread.CurrentThread.CurrentCulture = CultureInfo.CurrentCulture;

但是当我打开子窗口时,格式并没有改变。

有谁知道问题是什么以及如何解决这个问题?

【问题讨论】:

您的问题到底是什么?您是否通过在后面的代码中分配 CurrentCulture 解决了这个问题? 不,我已经写过这个问题还没有解决..我已经尝试过这些事情但还没有解决。你能帮帮我吗?? 【参考方案1】:

根据这个答案(How to get current regional settings in C#?),您可以使用此代码检测文化:

private class State

    public CultureInfo Result  get; set; 


public CultureInfo GetCurrentCulture()

    Thread.CurrentThread.CurrentCulture.ClearCachedData();
    var thread = new Thread(s => ((State)s).Result = Thread.CurrentThread.CurrentCulture);
    var state = new State();
    thread.Start(state);
    thread.Join();
    var culture = state.Result;

最后,你需要设置 CurrentUICulture 属性来影响 UI 组件:

Thread.CurrentThread.CurrentUICulture = GetCurrentCulture();

【讨论】:

以上是关于在运行时更改系统日期格式时更新 DatePicker 中的日期格式的主要内容,如果未能解决你的问题,请参考以下文章

更改电脑日期显示格式

Jquery Datepicker 没有隐藏过去的日期

Yii2查看日期时间格式(d-m-Y H:i:s)但是当DB更改格式保存/更新为Y-m-d时H:i:s

更改日期格式时获取错误日期

SwiftUI DatePicker 在更改日期时在短日期格式和中日期格式之间跳转

R中的自动更新日期(总是在昨天查询)