如何在Silverlight DatePicker控件中更改日期格式?

时间:2009-01-25 16:38:56

标签: silverlight datepicker

这很有效:

<my:DatePicker IsTodayHighlighted="True" Width="200">
</my:DatePicker> 

但我想格式化日期,如下所示:

<my:DatePicker IsTodayHighlighted="True" Width="200" Format="yyyy-mm-dd">
</my:DatePicker> 

有人知道这个的语法吗?

5 个答案:

答案 0 :(得分:28)

不幸的是,DatePicker控件目前不支持免费的DateTime格式。

如果您有兴趣在未来版本的DatePicker中看到支持,请创建一个代码复合功能请求,建议这样做。 http://silverlight.codeplex.com/WorkItem/Create.aspx

只是指出新的Silverlight工具包2009年3月TimePicker&amp; TimeUpDown控件确实支持全方位的全球化选项。其中之一包括免费的DateTime格式。因此,我们是否将该功能移回DatePicker仅仅是公众利益的问题。 看看TimePicker @的格式 http://silverlight.codeplex.com/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%201#TimePicker

与此同时,最好的解决方法是改变当地文化或当地文化的格式。

    public App()
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo("nl-NL");

或更改当地文化的格式。

        public App()
    {
        Thread.CurrentThread.CurrentCulture = (CultureInfo) Thread.CurrentThread.CurrentCulture.Clone();
        Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "D/m/yyyy";

答案 1 :(得分:1)

您应该定义自定义控件模板并编辑datepicker控件的文本框以格式化文本。

答案 2 :(得分:0)

Silverlight DatePicker上有一个SelectedDateFormat属性,这可能就是你要找的。

答案 3 :(得分:0)

你可以隐藏控件文本框(宽度较小),暴露你自己(可选择将IsEnabled设置为false)并使用Element绑定和Converter。如果您正在使用MVVM,请将DataContext设置为ViewModel。我想另一个选择是覆盖DataTemplate以不包括文本框并做同样的想法。

<StackPanel Orientation="Horizontal" Height="22">
      <TextBox x:Name="textBox2" Width="106" Text="{Binding ElementName=datePicker2, Path=SelectedDate, Mode=TwoWay, Converter={StaticResource internationalDateTimeFormatConverter}}" />
      <controls:DatePicker x:Name="datePicker2" IsTabStop="False" SelectedDate="{Binding TargetDatePicker, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" Width="23" HorizontalAlignment="Left" />
</StackPanel>

更新: 从文本框到日期选择器的TwoWay绑定运行良好,但它不会更新ViewModel属性。所以我要设置IsEnabled = False并称之为好。

答案 4 :(得分:0)

我注意到这是一个已回答的问题。

但我想将this link通知我最近开始创建的Silverlight 5控件工具包。它包含(在其他控件中)一个DateTimeBox控件,您可以在该控件中处理同一控件中的日期和时间。此时,它仍在开发中,但它应该可用于大多数情况。