WPF的日期格式问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF的日期格式问题相关的知识,希望对你有一定的参考价值。

在我的wpf应用程序中,我使用了DatePicker控件。我遇到了DatePicker控件格式的问题。它不采用我指定的形式,而是采用默认的系统格式。我在我的应用程序启动文件中设置了日期时间格式,如下所示,

 string currentCulture = AppSettings.Locale;
        CultureInfo ci = new System.Globalization.CultureInfo(currentCulture);
        ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
        Thread.CurrentThread.CurrentUICulture = ci;

在xaml我已设置ma选择日期如下

SelectedDate="{Binding DateOfBirth, StringFormat='DD/MM/YYYY', Mode=TwoWay}"

在风格我已设置如下文字

Text="{Binding Path=SelectedDate, StringFormat='dd/MM/yyyy', 
                            RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}">

还有什么我错过了?为什么格式没有改变?有谁可以帮我这个?

PS:我最近更新到.net框架版本4.7

答案

试试这个:

<DatePicker SelectedDate="{Binding DateOfBirth}">
    <DatePicker.Resources>
        <Style TargetType="{x:Type DatePickerTextBox}">
            <Setter Property="Control.Template">
                <Setter.Value>
                    <ControlTemplate>
                        <TextBox x:Name="PART_TextBox"
                                 Text="{Binding Path=SelectedDate, StringFormat='dd/MM/yyyy', 
                                 RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DatePicker.Resources>
</DatePicker>
另一答案

如果我在ma启动文件中添加以下行,问题就解决了

Thread.CurrentThread.CurrentCulture = ci;

所以文化部分应如下所示:

string currentCulture = AppSettings.Locale;
        CultureInfo ci = new System.Globalization.CultureInfo(currentCulture);
        ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
        Thread.CurrentThread.CurrentUICulture = ci;
        Thread.CurrentThread.CurrentCulture = ci;

以上是关于WPF的日期格式问题的主要内容,如果未能解决你的问题,请参考以下文章

WPF的日期格式问题

wpf datagrid显示日期问题

WPF 工具包,如何在 C# 中为日期选择器控件应用日期格式?

WPF 数据网格中的日期格式

WPF中DataGrid控件怎么修改显示时间日期的格式

WPF-数据绑定:日期时间格式