/// <summary> /// Common PropertyChangedCallback for dependency properties that trigger visual state changes /// </summary> /// <param name="dObject"></param> /// <param name="e"></param> private static void OnVisualStatePropertyChanged(DependencyObject dObject, DependencyPropertyChangedEventArgs e) { CalendarButton button = dObject as CalendarButton; if (button != null && !object.Equals(e.OldValue, e.NewValue)) { button.ChangeVisualState(true); } }
private static object OnCoerceContent(DependencyObject sender, object baseValue) { CalendarButton button = (CalendarButton)sender; if (button._shouldCoerceContent) { button._shouldCoerceContent = false; return(button._coercedContent); } return(baseValue); }
private void PopulateGrids() { if (_monthView != null) { if (_dayTitleTemplate != null) { for (int i = 0; i < COLS; i++) { FrameworkElement titleCell = (FrameworkElement)this._dayTitleTemplate.LoadContent(); titleCell.SetValue(Grid.RowProperty, 0); titleCell.SetValue(Grid.ColumnProperty, i); this._monthView.Children.Add(titleCell); } } for (int i = 1; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { CalendarDayButton dayCell = new CalendarDayButton(); dayCell.Owner = this.Owner; dayCell.SetValue(Grid.RowProperty, i); dayCell.SetValue(Grid.ColumnProperty, j); dayCell.SetBinding(CalendarDayButton.StyleProperty, GetOwnerBinding("CalendarDayButtonStyle")); dayCell.AddHandler(CalendarDayButton.MouseLeftButtonDownEvent, new MouseButtonEventHandler(Cell_MouseLeftButtonDown), true); dayCell.AddHandler(CalendarDayButton.MouseLeftButtonUpEvent, new MouseButtonEventHandler(Cell_MouseLeftButtonUp), true); dayCell.AddHandler(CalendarDayButton.MouseEnterEvent, new MouseEventHandler(Cell_MouseEnter), true); dayCell.Click += new RoutedEventHandler(Cell_Clicked); dayCell.AddHandler(PreviewKeyDownEvent, new RoutedEventHandler(CellOrMonth_PreviewKeyDown), true); this._monthView.Children.Add(dayCell); } } } if (_yearView != null) { CalendarButton monthCell; int count = 0; for (int i = 0; i < YEAR_ROWS; i++) { for (int j = 0; j < YEAR_COLS; j++) { monthCell = new CalendarButton(); monthCell.Owner = this.Owner; monthCell.SetValue(Grid.RowProperty, i); monthCell.SetValue(Grid.ColumnProperty, j); monthCell.SetBinding(CalendarButton.StyleProperty, GetOwnerBinding("CalendarButtonStyle")); monthCell.AddHandler(CalendarButton.MouseLeftButtonDownEvent, new MouseButtonEventHandler(Month_MouseLeftButtonDown), true); monthCell.AddHandler(CalendarButton.MouseLeftButtonUpEvent, new MouseButtonEventHandler(Month_MouseLeftButtonUp), true); monthCell.AddHandler(CalendarButton.MouseEnterEvent, new MouseEventHandler(Month_MouseEnter), true); monthCell.AddHandler(UIElement.PreviewKeyDownEvent, new RoutedEventHandler(CellOrMonth_PreviewKeyDown), true); monthCell.Click += new RoutedEventHandler(Month_Clicked); this._yearView.Children.Add(monthCell); count++; } } } }
/// <summary> /// Initializes a new instance of the CalendarButtonAutomationPeer class. /// </summary> /// <param name="owner">Owning CalendarButton</param> public CalendarButtonAutomationPeer(CalendarButton owner) : base(owner) { }
internal void OnCalendarButtonPressed(CalendarButton b, bool switchDisplayMode) { if (b.DataContext is DateTime) { DateTime d = (DateTime)b.DataContext; DateTime? newDate = null; CalendarMode newMode = CalendarMode.Month; switch (this.DisplayMode) { case CalendarMode.Month: { Debug.Assert(false); break; } case CalendarMode.Year: { newDate = DateTimeHelper.SetYearMonth(this.DisplayDate, d); newMode = CalendarMode.Month; break; } case CalendarMode.Decade: { newDate = DateTimeHelper.SetYear(this.DisplayDate, d.Year); newMode = CalendarMode.Year; break; } default: Debug.Assert(false); break; } if (newDate.HasValue) { this.DisplayDate = newDate.Value; if (switchDisplayMode) { this.DisplayMode = newMode; FocusDate(this.DisplayMode == CalendarMode.Month ? this.CurrentDate : this.DisplayDate); } } } }