/// <summary> /// Clear the event, and detach our current EditableTextBox from ComboBox /// </summary> private void DetachFromVisualTree() { if (EditableTextBoxSite != null) { EditableTextBoxSite.LostKeyboardFocus -= new KeyboardFocusChangedEventHandler(OnEditableTextBoxLostFocus); EditableTextBoxSite.KeyDown -= new KeyEventHandler(OnEditableTextBoxKeyDown); EditableTextBoxSite.TextChanged -= new TextChangedEventHandler(OnEditableTextBoxTextChanged); EditableTextBoxSite = null; } if (MonthCalendar != null) { MonthCalendar.DateSelectionChanged -= new DateSelectionChangedEventHandler(OnDateSelectionChanged); MonthCalendar.VisibleMonthChanged -= new RoutedPropertyChangedEventHandler<DateTime>(OnMonthCalendarVisibleMonthChanged); CommandManager.RemovePreviewExecutedHandler(MonthCalendar, new ExecutedRoutedEventHandler(OnMonthCalendarCommandPreviewExecuted)); MonthCalendar = null; } }
/// <summary> /// Create a new SelectionChanger -- there should only be one instance per MonthCalendar. /// </summary> internal SelectionChanger(MonthCalendar mcc) { Debug.Assert(mcc != null); _owner = mcc; InitFlags(); _toSelect = new List<DateTime>(1); _toRestoreSelect = new List<DateTime>(1); _toUnselect = new List<DateTime>(1); }
/// <summary> /// Detaches the EditableTextBox, MonthCalendar from old child tree and attaches them to a new one /// </summary> private void AttachToVisualTree() { DetachFromVisualTree(); EditableTextBoxSite = GetTemplateChild(c_EditableTextBoxTemplateName) as TextBox; if (EditableTextBoxSite != null) { EditableTextBoxSite.LostKeyboardFocus += new KeyboardFocusChangedEventHandler(OnEditableTextBoxLostFocus); EditableTextBoxSite.KeyDown += new KeyEventHandler(OnEditableTextBoxKeyDown); EditableTextBoxSite.TextChanged += new TextChangedEventHandler(OnEditableTextBoxTextChanged); if (CanEdit)//set Text to EditableTextBoxSite.Text in editable mode { UpdateEditableTextBox(Text); } } MonthCalendar = GetTemplateChild(c_DatePickerCalendarTemplateName) as MonthCalendar; if (MonthCalendar != null) { MonthCalendar.DateSelectionChanged += new DateSelectionChangedEventHandler(OnDateSelectionChanged); MonthCalendar.VisibleMonthChanged += new RoutedPropertyChangedEventHandler<DateTime>(OnMonthCalendarVisibleMonthChanged); CommandManager.AddPreviewExecutedHandler(MonthCalendar, new ExecutedRoutedEventHandler(OnMonthCalendarCommandPreviewExecuted)); } RefreshDropDownButtonStyle(); }