DatePicker 其他格式的默认日期
Posted
技术标签:
【中文标题】DatePicker 其他格式的默认日期【英文标题】:DatePicker default date in other format 【发布时间】:2019-08-12 17:21:09 【问题描述】:我有一个带有 DatePicket 控制器的 WPF 窗口。 我想显示当前日期而不是“显示日历”文本。
我使用了这个参考
xmlns:sys="clr-namespace:System;assembly=mscorlib"
还有这段代码
<DatePicker x:Name="DatePicker1" Grid.Column="1" Grid.Row="0" SelectedDate="x:Reference sys:DateTime.Now">
它工作正常,但我想像这样更改日期格式:yyyy。毫米。 dd。 我该怎么做?
【问题讨论】:
试试 FormatString 属性 【参考方案1】:您可以通过更改日期选择器的模板来修改底层文本框。请看下面的例子:
<DatePicker SelectedDate="x:Static sys:DateTime.Now">
<DatePicker.Resources>
<Style TargetType="DatePickerTextBox">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<TextBox x:Name="PART_TextBox"
Text="Binding Path=SelectedDate, StringFormat=0:yyyy.MM.dd,
RelativeSource=RelativeSource AncestorType=x:Type DatePicker" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DatePicker.Resources>
</DatePicker>
我将 SelectedDate="x:Static sys:DateTime.Now"
从 x:Reference
更改为 x:Static
以使其在测试时正常工作。
结果:
顺便说一句,如果您想将此代码重新用于多个日期选择器,那么您只需复制 <Style></Style>
标签(以及其中的所有内容)的 XAML 并将其放入您的 App.xaml 中的 <Application.Resources>
和样式/format 将应用于所有日期选择器。
我找到了上面的代码here。
【讨论】:
【参考方案2】:您需要指定如下所示的格式,下面是文本块的示例:
<TextBlock Text="Binding Source=x:Static system:DateTime.Now, StringFormat=Date: 0:yyyy.MM.dd" />
对于 DatePicker,您必须设置控件模板来修改 TextBlock。以下是来自的示例代码:
<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>
您可以在此处使用任何标准的 DateTime 格式。希望这会有所帮助。
【讨论】:
以上是关于DatePicker 其他格式的默认日期的主要内容,如果未能解决你的问题,请参考以下文章
WPF DatePicker默认显示当前日期,格式化为年月日(转)