/// <summary> /// IsDropDownOpenProperty property changed handler. /// </summary> /// <param name="d">DatePicker that changed its IsDropDownOpen.</param> /// <param name="e">DependencyPropertyChangedEventArgs.</param> private static void OnIsDropDownOpenChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { DatePicker datePicker = d as DatePicker; Debug.Assert(datePicker != null); bool newValue = (bool)e.NewValue; bool oldValue = (bool)e.OldValue; if (datePicker._popUp != null && datePicker._popUp.Child != null) { if (newValue != oldValue) { if (datePicker._calendar.DisplayMode != CalendarMode.Month) { datePicker._calendar.DisplayMode = CalendarMode.Month; } if (newValue) { datePicker.OpenDropDown(); } else { Debug.Assert(!newValue); datePicker._popUp.IsOpen = false; datePicker.OnCalendarClosed(new RoutedEventArgs()); } } } }