private static void OnMaxDateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { FXMonthView mv = (FXMonthView)d; DateTime oldViewDate = mv.ViewDateTime; mv.CoerceValue(ViewDateTimeProperty); if (oldViewDate != mv.ViewDateTime) { mv.OnMaxMinDateChanged(mv.MinDate, (DateTime)e.NewValue); } }
private static object CoerceMaxDate(DependencyObject d, object value) { FXMonthView mv = (FXMonthView)d; DateTime newValue = (DateTime)value; DateTime min = mv.MinDate; if (newValue < min) { return(min); } return(value); }
/// <summary> /// Clear the event, and detach our current EditableTextBox from ComboBox /// </summary> private void DetachFromVisualTree() { if (MonthView != null) { CommandManager.RemovePreviewExecutedHandler(MonthView, OnMonthViewCommandPreviewExecuted); MonthView.SelectedDateTimeChanged -= OnMonthViewDateTimeSelectionChanged; MonthView = null; } if (ValuePresenter != null) { ValuePresenter.MouseLeftButtonDown -= OnValuePresenterDoubleClick; } }
private static void OnMinDateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { FXMonthView mv = (FXMonthView)d; DateTime oldMaxDate = mv.MaxDate; DateTime oldViewDate = mv.ViewDateTime; mv.CoerceValue(MaxDateProperty); mv.CoerceValue(ViewDateTimeProperty); if (CompareYearMonthDay(oldMaxDate, mv.MaxDate) == 0 && CompareYearMonth(oldViewDate, mv.ViewDateTime) == 0) { mv.OnMaxMinDateChanged((DateTime)e.NewValue, mv.MaxDate); } }
private static void OnSelectedDateTimeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { FXMonthView mv = (FXMonthView)d; DateTime? newValue = (DateTime?)e.NewValue; DateTime? oldValue = (DateTime?)e.OldValue; DateSelectionChangedEventArgs args = new DateSelectionChangedEventArgs(PreviewSelectedDateTimeChangedEvent); args.RemovedDates.Add(oldValue); args.AddedDates.Add(newValue); mv.RaisePreviewSelectedDateTimeChanged(args); if (!args.Handled) { args = new DateSelectionChangedEventArgs(SelectedDateTimeChangedEvent); args.RemovedDates.Add(oldValue); args.AddedDates.Add(newValue); mv.RaiseSelectedDateTimeChanged(args); } }
/// <summary> /// Detaches the EditableTextBox, MonthView from old child tree and attaches them to a new one /// </summary> private void AttachToVisualTree() { DetachFromVisualTree(); MonthView = GetTemplateChild(PART_MonthView) as FXMonthView; ValuePresenter = GetTemplateChild(PART_ValuePresenter) as TextBlock; if (MonthView != null) { CommandManager.AddPreviewExecutedHandler(MonthView, OnMonthViewCommandPreviewExecuted); MonthView.SelectedDateTimeChanged += OnMonthViewDateTimeSelectionChanged; } if (ValuePresenter != null) { ValuePresenter.MouseLeftButtonDown += OnValuePresenterDoubleClick; } RefreshDropDownButtonStyle(); }
private static void OnViewDateTimeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { FXMonthView mv = (FXMonthView)d; DateTime newValue = (DateTime)e.NewValue; DateTime oldValue = (DateTime)e.OldValue; RoutedPropertyChangedEventArgs <DateTime> args = new RoutedPropertyChangedEventArgs <DateTime>(oldValue, newValue); args.RoutedEvent = PreviewViewDateTimeChangedEvent; mv.RaisePreviewViewDateTimeChanged(args); if (!args.Handled) { args = new RoutedPropertyChangedEventArgs <DateTime>(oldValue, newValue); args.RoutedEvent = ViewDateTimeChangedEvent; mv.RaiseViewDateTimeChanged(args); if (!args.Handled) { mv.RecreateDays(); } } }