WinRTXamlToolkit.Controls.Calendar.OnDisplayModePropertyChanged C# (CSharp) Метод

OnDisplayModePropertyChanged() приватный статический Метод

DisplayModeProperty property changed handler.
private static OnDisplayModePropertyChanged ( DependencyObject d, DependencyPropertyChangedEventArgs e ) : void
d Windows.UI.Xaml.DependencyObject Calendar that changed its DisplayMode.
e Windows.UI.Xaml.DependencyPropertyChangedEventArgs The DependencyPropertyChangedEventArgs.
Результат void
        private static void OnDisplayModePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            Calendar c = d as Calendar;
            Debug.Assert(c != null, "c should not be null!");
            CalendarMode mode = (CalendarMode) e.NewValue;
            CalendarMode oldMode = (CalendarMode) e.OldValue;
            CalendarItem monthControl = c.MonthControl;

            if (!c.IsHandlerSuspended(Calendar.DisplayModeProperty))
            {
                if (IsValidDisplayMode(mode))
                {
                    if (monthControl != null)
                    {
                        switch (oldMode)
                        {
                            case CalendarMode.Month:
                                {
                                    c.SelectedYear = c.DisplayDateInternal;
                                    c.SelectedMonth = c.DisplayDateInternal;
                                    break;
                                }
                            case CalendarMode.Year:
                                {
                                    c.DisplayDate = c.SelectedMonth;
                                    c.SelectedYear = c.SelectedMonth;
                                    break;
                                }
                            case CalendarMode.Decade:
                                {
                                    c.DisplayDate = c.SelectedYear;
                                    c.SelectedMonth = c.SelectedYear;
                                    break;
                                }
                        }

                        switch (mode)
                        {
                            case CalendarMode.Month:
                                {
                                    c.OnMonthClick();
                                    break;
                                }
                            case CalendarMode.Year:
                            case CalendarMode.Decade:
                                {
                                    c.OnHeaderClick();
                                    break;
                                }
                        }
                    }
                    c.OnDisplayModeChanged(new CalendarModeChangedEventArgs((CalendarMode)e.OldValue, mode));
                }
                else
                {
                    c.SetValueNoCallback(Calendar.DisplayModeProperty, e.OldValue);
                    throw new ArgumentOutOfRangeException("d", WinRTXamlToolkit.Controls.Properties.Resources.Calendar_OnDisplayModePropertyChanged_InvalidValue);
                }
            }
        }