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 以使其在测试时正常工作。

结果:

顺便说一句,如果您想将此代码重新用于多个日期选择器,那么您只需复制 &lt;Style&gt;&lt;/Style&gt; 标签(以及其中的所有内容)的 XAML 并将其放入您的 App.xaml 中的 &lt;Application.Resources&gt; 和样式/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默认显示当前日期,格式化为年月日(转)

从 html5 datepicker 禁用某些日期

JQuery DatePicker 只读

在 Jquery Ui Datepicker 中禁用今天之后的未来日期

当值设置为超过最大日期时,Kendo Datepicker 显示错误的格式