我现在正在使用WPF应用程序,我必须为DateTime Picker编写自己的自定义控件。 DateTime Picker没有任何规定来设置userdefine Date Format。
Approch是做什么的。如果有任何想法请帮助我。
由于 Arijit。
用户定义格式表示.. 在我的senarion我有一个配置文件,我有n个轴,其中日期时间将被取代,我有一个下拉列表,它将以配置文件中配置的格式显示当前日期。现在每个轴的格式为配置文件可能不同,在这种情况下,我希望日期选择器应填充当前所选轴的格式。
现在问题是我已经尝试了以下approch @Sebastian Edelmeier已经指出但是
CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
ci.DateTimeFormat.DateSeparator = "/";
Thread.CurrentThread.CurrentCulture = ci;
因为我将改变应用程序的文化更改下拉列表,这种方式是不可接受的。此外,控件是一个对话框,一旦当前线程更新它不会回复到另一种文化,我猜。
我完全陷入了时间点。
答案 0 :(得分:0)
也许你可以用Binding中的StringFormat参数覆盖DatePickerTextBox的ControlTemplate。 e.g。
<Style TargetType="{x:Type DatePickerTextBox}">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<TextBox x:Name="PART_TextBox"
Text="{Binding Path=SelectedDate, RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}, StringFormat=\{0:f\}}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
其中{0:f}是所需的字符串格式。或者,您可以使用自定义转换器来获取所需的格式。 我想这可能已经足够了,所以你不必为整个datepicker覆盖controltemplate
答案 1 :(得分:-1)
如果您想要所有功能并且只更改描述日期的方式,您只需编辑您的CultureInfo:
CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
ci.DateTimeFormat.DateSeparator = "/";
Thread.CurrentThread.CurrentCulture = ci;
这应该可以解决问题。