Как определить MouseDoubleClick на календаре BlackoutDates?

В моем приложении WPF/C# у меня есть Calendar контроль, с диапазоном BlackoutDates задавать. Я тоже хочу справиться MouseDoubleClick события, но я не вижу, как определить, что пользователь дважды щелкнул по дате отключения - дата, возвращаемая обработчику событий, в этом случае является последней выбранной действительной (то есть, не отключенной датой) датой. Как я могу "игнорировать" двойной щелчок на этих BlackoutDates?

РЕДАКТИРОВАТЬ:
XAML:

<Calendar MouseDoubleClick="Calendar_MouseDoubleClick"/>

Код позади:

private void Calendar_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    if (myCalendarBlackoutDatesCollection.Contains(/* what goes here? */))
    {
        return;  // ignore doubleclick
    }
    // execution continues here
}

1 ответ

Решение

Вы могли бы справиться с MouseDoubleClick каждого человека CalendarDayButton определив CalendarDayButtonStyle:

<Calendar x:Name="cal">
    <Calendar.CalendarDayButtonStyle>
        <Style TargetType="CalendarDayButton">
            <EventSetter Event="MouseDoubleClick" Handler="cal_MouseDoubleClick" />
        </Style>
    </Calendar.CalendarDayButtonStyle>
</Calendar>

private void cal_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    System.Windows.Controls.Primitives.CalendarDayButton button = sender as System.Windows.Controls.Primitives.CalendarDayButton;
    DateTime clickedDate = (DateTime)button.DataContext;
    if (!cal.BlackoutDates.Contains(clickedDate))
    {
        MessageBox.Show("No blackout date was clicked!");
    }
}
Другие вопросы по тегам