3

我正在尝试更改日历日标题前景色。我正在使用标准的 .net 4.0 Datepicker。日历嵌入在 Datepicker 中。

我在资源文件中有以下代码。但它不起作用。

<Style  TargetType="{x:Type CalendarItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type CalendarItem}">
                <ControlTemplate.Resources>
                    <DataTemplate x:Key="DayTitleTemplate">
                        <TextBlock
                                            FontWeight="Bold" 
                                            FontFamily="Verdana" 
                                            FontSize="9.5" 
                                            Foreground="Red" 
                                            HorizontalAlignment="Center"
                                            Text="{Binding}"
                                            Margin="0,6,0,6"
                                            VerticalAlignment="Center"/>
                    </DataTemplate>
                </ControlTemplate.Resources>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

谁能帮忙看看我在这里缺少什么?谢谢,

4

2 回答 2

1

不幸的是,前景属性在默认控件模板中是硬编码的。改变它的方法是复制和修改模板

<Style x:Key="CalendarItemStyle" TargetType="{x:Type CalendarItem}">
    <Setter Property="Margin" Value="0,3,0,3" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type CalendarItem}">
                    <ControlTemplate.Resources>
                        <DataTemplate x:Key="{x:Static CalendarItem.DayTitleTemplateResourceKey}">
                            <TextBlock 
                                <!-- Day header color here -->
                                Foreground="Red"
                                FontWeight="Bold"
                                FontSize="9.5"
                                FontFamily="Verdana"
                                Margin="0,6,0,6"
                                Text="{Binding}"
                                HorizontalAlignment="Center"
                                VerticalAlignment="Center" />
                        </DataTemplate>

您可能还想使用Foreground="{TemplateBinding}",这样您就可以通过Foreground在各个控件上设置属性来修改颜色。

于 2013-08-02T20:30:56.717 回答
0

看看这篇MSDN 文章,它是关于自定义 WPF 日历控件的,并且在控件上有此摘录DatePicker

来自链接(强调我的):

但是,您可以应用于独立 Calendar 控件的所有样式和模板也可以应用于从 DatePicker 中的下拉列表调用的 Calendar 控件。DatePicker控件有一个名为 CalendarStyle 且类型为 Style 的属性,您设置为此属性的 Style 对象可以包含由 Calendar 定义的任何属性的设置器,包括 CalendarItemStyle、CalendarButtonStyle 和 CalendarDayButtonStyle 属性

请参阅此链接以获取DatePicker模板

于 2013-08-03T04:13:33.913 回答