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的日期格式问题的主要内容,如果未能解决你的问题,请参考以下文章