如何在DatePicker中将颜色设置为多天?

时间:2018-01-24 20:33:11

标签: wpf xaml mahapps.metro

我想知道是否可以为DatePicker的特定日期设置特定颜色,假设我想告诉用户在这些日子里:5, 10, 11, 20, 30可以查看一些数据。我需要指定一个特定的颜色,例如蓝色,这可能吗?

在文档中没有任何内容。

感谢。

1 个答案:

答案 0 :(得分:2)

DatePickerCalendar都对开出日期提供了开箱即用的支持。您可以利用此功能来确定可选择的日期。然后,重新设置日历日按钮以查看您想要的方式。默认情况下,中断日期有一个' X'通过它们,但应用彩色阴影可能更好。

首先,考虑到一些可选择的'日期,计算反向范围。这些日期 可选,即限制日期。

public void SetSelectableDates(IEnumerable<DateTime> times)
{
    var selectableDates = times.Select(d => d.Date).Distinct().OrderBy(o => o).ToList();
    var blackoutRanges = new List<CalendarDateRange>();

    _datePicker.BlackoutDates.Clear();

    if (selectableDates.Count == 0)
    {
        _datePicker.BlackoutDates.Add(
            new CalendarDateRange(DateTime.MinValue, DateTime.MaxValue));
        return;
    }

    var start = DateTime.MinValue;

    foreach (var date in selectableDates)
    {
        var end = date.AddDays(-1);

        if (date != start)
            blackoutRanges.Add(new CalendarDateRange(start, end));

        start = date.AddDays(1);
    }

    blackoutRanges.Add(new CalendarDateRange(start, DateTime.MaxValue));

    foreach (var range in blackoutRanges)
        _datePicker.BlackoutDates.Add(range);
}

接下来,设置应用自定义CalendarStyle的{​​{1}}来覆盖弹出窗口中可选择和不可选日期的显示方式:

CalendarDayButtonStyle

通常的样式规则适用:您希望使用适合您应用程序主题(或系统主题)的画笔。

结果:

Screenshot of Results