首页 > 解决方案 > Wpf 自定义 DatePicker 日历和 CalendarDayButton

问题描述

我正在 WPF 应用程序中自定义 DatePicker 控件,目标是使其对触摸屏友好。

我对 WPF 本身并不熟悉,但是通过几个教程我已经能够让它变得更大,我创建了一个用于自定义 DatePicker 本身的模板,并在后面的代码中添加了几个控件来限制日期范围等等。

当我尝试更改“BlackoutDates”背景时,我只是卡住了: 日历示例

根据 UX 指南,我必须将“X”颜色从灰色更改为红色。

日期选择器本身看起来不错,日历没有:

<DatePicker Style="{StaticResource MyDatePickerStyle}" CalendarStyle="{StaticResource styleCalendar}" Height="60" HorizontalAlignment="Center" Name="datePicker1" VerticalAlignment="Center" Width="400">
    <DatePicker.BlackoutDates>
        <CalendarDateRange End="6/19/2019" />
        <CalendarDateRange Start="6/28/2019" />                    
    </DatePicker.BlackoutDates>                
</DatePicker>

这是我的模板,我获得的唯一效果是使日历更大:

<Style x:Key="styleCalendar" TargetType="{x:Type Calendar}">
    <Setter Property="CalendarDayButtonStyle" Value="{StaticResource
    styleCalendarButton}" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Calendar}">
                <Viewbox Height="400" Width="400">
                    <CalendarItem x:Name="PART_CalendarItem"
                          Background="{TemplateBinding Background}"
                          BorderBrush="{TemplateBinding BorderBrush}"
                          BorderThickness="{TemplateBinding BorderThickness}"/>
                </Viewbox>
            </ControlTemplate>                    
        </Setter.Value>
    </Setter>        
</Style>

    <Style x:Key="styleCalendarButton" TargetType="CalendarDayButton" BasedOn="{StaticResource {x:Type CalendarDayButton}}">
        <Style.Triggers>
            <Trigger Property="IsBlackedOut" Value="True">
                <Setter Property="Background" Value="Red"/>
            </Trigger>
        </Style.Triggers>
    </Style>

我搜索了几个示例,但似乎我无法轻松自定义 CalendarItem 及其按钮。

问题是:如何更改停电日背景上的“X”颜色?

标签: c#wpfbuttondatepickercalendar

解决方案


推荐阅读