我不明白为什么 CalendarDatePicker 是这样设计的,只有在“ReadLocalValue”为真时才接受 DateFormat。这意味着以下两个更改是有效的:
<CalendarDatePicker x:Name="myCalendarDatePicker"
DateFormat = "{}{dayofweek.full}, {month.full} {day.integer}, {year.full}"/>
或者
myCalendarDatePicker.DateFormat = "{dayofweek.full}, {month.full} {day.integer}, {year.full}";
所以它不适用于您的示例。您可以通过创建嵌套的虚拟 CalendarDatePicker 来解决此问题,但我不建议您这样做。
<Style x:Key="CalendarDatePicker" TargetType="CalendarDatePicker">
<Setter Property="Foreground" Value="Green" />
<Setter Property="Margin" Value="5,0,5,0" />
<Setter Property="Margin" Value="5,0,5,0" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="DateFormat" Value="{}{day.integer}.{month.integer}.{year.full}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CalendarDatePicker">
<Grid x:Name="RootElement">
<CalendarDatePicker DateFormat="{TemplateBinding DateFormat}"
Foreground="{TemplateBinding Foreground}"
Margin="{TemplateBinding Margin}"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
VerticalAlignment="{TemplateBinding VerticalAlignment}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>