C# 您如何在WPF日历控件上检测自动月班?

C# 您如何在WPF日历控件上检测自动月班?,c#,wpf,user-interface,user-controls,calendar,C#,Wpf,User Interface,User Controls,Calendar,我正在尝试创建一个日历,允许用户单击并切换所选日期。因此,他们单击要包含的每个日期,并在不使用ctrl或shift键的情况下一次选择一个日期。无论如何,为了实现这一点,我把两个日历放在我的控件上。我将其中一个设置为不透明,将另一个设置为不可见: <Calendar x:Name="_visibleCalendar" SelectionMode="MultipleRange" IsHitTestVisible="False" Margin="0,0,0,-46"/> &

我正在尝试创建一个日历,允许用户单击并切换所选日期。因此,他们单击要包含的每个日期,并在不使用ctrl或shift键的情况下一次选择一个日期。无论如何,为了实现这一点,我把两个日历放在我的控件上。我将其中一个设置为不透明,将另一个设置为不可见:

    <Calendar x:Name="_visibleCalendar" SelectionMode="MultipleRange" IsHitTestVisible="False" Margin="0,0,0,-46"/>
    <Calendar x:Name="_selectableCalendar" Opacity="0.5" SelectedDatesChanged="DateClicked" VerticalAlignment="Bottom"/>


    private void DateClicked(object sender, SelectionChangedEventArgs e)
    {
        DateTime? date = _selectableCalendar.SelectedDate;
        _selectableCalendar.SelectedDate = null;

        if (date != null)
        {
            if (_visibleCalendar.SelectedDates.Contains((DateTime) date))
            {
                _visibleCalendar.SelectedDates.Remove((DateTime) date);
            }
            else
            {
                _visibleCalendar.SelectedDates.Add((DateTime) date);
            }
        }
    }
这样做的目的是允许用户单击_selectableCalendar并将其选择添加到_visibleCalendar.SelectedDates

有点酷,如果我自己这么说的话。除了用户更改不可见日历上的月份外,它工作得非常好

所以,我需要知道的是,我如何检测日历已转移到显示不同的月份

我尝试过使用DisplayDateStart和DisplayDateEnd,但它们总是空的

另外,还有一个问题,有没有一种简单的方法可以用不同的颜色突出显示日历上的日期?喜欢用交替的颜色来突出每一天吗?红、蓝、红等等

谢谢你的帮助。

天真的方法

private void DateClicked(object sender, SelectionChangedEventArgs e)
{
    var dt = selectableCalendar.SelectedDate;
    if (_curr == null)
        _curr = selectableCalendar.SelectedDate;

    if (((DateTime)_curr).Month != ((DateTime)dt).Month)
    {
        _curr = dt;
        // blah
    }
}
时间在哪里_咖喱;已在类范围中声明 根据您的要求,组合if语句