我有一个带有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。 我该怎么办?
答案 0 :(得分:3)
您可以通过更改日期选择器的模板来修改基础文本框来实现。请参见下面的示例:
<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并将其放入{{1}下的App.xaml中},样式/格式将应用于所有日期选择器。
我找到了上面的代码here。
答案 1 :(得分:0)
您将需要指定如下所示的格式,以下是文本块的示例:
<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格式。希望这会有所帮助。