首页 > 解决方案 > Calendardatepicker 日期格式

问题描述

是否可以在 Calendardatepicker 样式/模板中设置日期格式?

  <Style x:Name="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}" />

</Style>

我试着按照上面的方法做,但它不起作用。

标签: c#xamluwp

解决方案


我不明白为什么 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>

推荐阅读