1

我现在正在使用 WPF 应用程序,我必须为 DateTime Picker 编写自己的自定义控件。日期时间选择器没有任何设置用户定义日期格式的规定。

这样做的方法是什么..如果有人有任何想法请帮助我。

谢谢阿里吉特。


用户定义格式意味着.. 在我的 senarion 中,我有一个配置文件,我有 n 个轴,其中日期时间将被显示,我有一个下拉列表,它将以配置文件中配置的格式显示当前日期。现在对于每个轴,配置文件中的格式可能不同,在这个场景中,我希望日期选择器应该填充当前选择的轴的格式。

现在的问题是我已经尝试过@Sebastian Edelmeier已经指出的以下方法,但是

CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
ci.DateTimeFormat.DateSeparator = "/";
Thread.CurrentThread.CurrentCulture = ci; 

因为我将改变应用程序的文化改变下拉菜单,这种方式是不可接受的。此外,控件是一个对话框,一旦当前线程被更新,我猜它不会恢复到另一种文化。

我完全被困在时间点。

4

2 回答 2

0

也许您可以在 Binding 中使用 StringFormat 参数覆盖 DatePickerTextBox 的 ControlTemplate。例如

<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} 是所需的字符串格式。或者,您可以使用自定义转换器来获得所需的格式。我想这可能就足够了,因此您不必覆盖整个日期选择器的控制模板

于 2012-05-21T06:56:05.903 回答
-1

If you want all the functionality and only change the way the date is described, you can just edit your CultureInfo :

 CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
 ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
 ci.DateTimeFormat.DateSeparator = "/";
 Thread.CurrentThread.CurrentCulture = ci;

This should do the trick.

于 2012-05-18T09:03:29.297 回答