如何更改 Silverlight DatePicker 控件中的日期格式?
Posted
技术标签:
【中文标题】如何更改 Silverlight DatePicker 控件中的日期格式?【英文标题】:How to change date format in Silverlight DatePicker control? 【发布时间】:2010-10-03 10:28:59 【问题描述】:这很好用:
<my:DatePicker IsTodayHighlighted="True" Width="200">
</my:DatePicker>
但我想格式化日期,如下所示:
<my:DatePicker IsTodayHighlighted="True" Width="200" Format="yyyy-mm-dd">
</my:DatePicker>
有人知道这个的语法吗?
【问题讨论】:
您是否只需要为日期选择器设置不同的日期格式,还是也可以为整个应用程序设置特定的日期格式? 例如仅用于日期选择器。 【参考方案1】:很遗憾,DatePicker 控件目前不支持免费的 DateTime 格式。
如果您有兴趣在未来版本的 DatePicker 中获得支持,请创建一个 codeplex 功能请求来表明这一点。 http://silverlight.codeplex.com/WorkItem/Create.aspx
只是指出,新的 Silverlight Toolkit 2009 年 3 月的 TimePicker 和 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";
【讨论】:
设置当前文化效果很好 - 您只需在整个应用程序中执行一次。【参考方案2】:您应该定义一个自定义控件模板并编辑 datepicker 控件的文本框以设置文本格式。
【讨论】:
【参考方案3】:Silverlight DatePicker 上有一个 SelectedDateFormat 属性,这可能就是您要寻找的。p>
【讨论】:
【参考方案4】:您可以隐藏控件文本框(宽度较小),公开您自己的(可选地将 IsEnabled 设置为 false)并使用元素绑定和转换器。如果您使用的是 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 并称之为好。
【讨论】:
【参考方案5】:我注意到这是一个已回答的问题。
但我想将 this link 通知我最近开始创建的 Silverlight 5 控制工具包。它包含(以及其他控件)一个 DateTimeBox 控件,您可以在其中处理同一控件中的日期和时间。目前,它仍处于开发阶段,但应该适用于大多数场景。
【讨论】:
以上是关于如何更改 Silverlight DatePicker 控件中的日期格式?的主要内容,如果未能解决你的问题,请参考以下文章
C# Silverlight Datagrid - 行颜色更改
Silverlight 更改 Datagrid 上 selectedItem 的前景
Silverlight- DataGrid 控件 - 选择更改事件干扰排序