public void ShowMonths() { Device.BeginInvokeOnMainThread(() => { Content = null; ContentView.Children.Clear(); var columDef = new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }; var rowDef = new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }; var details = new Grid { VerticalOptions = LayoutOptions.CenterAndExpand, RowSpacing = 0, ColumnSpacing = 0, Padding = 1, BackgroundColor = BorderColor }; details.ColumnDefinitions = new ColumnDefinitionCollection { columDef, columDef, columDef }; details.RowDefinitions = new RowDefinitionCollection { rowDef, rowDef, rowDef, rowDef }; for (int r = 0; r < 4; r++) { for (int c = 0; c < 3; c++) { var b = new CalendarButton { HorizontalOptions = LayoutOptions.CenterAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand, Text = DateTimeFormatInfo.CurrentInfo.MonthNames[(r * 3) + c], Date = new DateTime(StartDate.Year, (r * 3) + c + 1, 1).Date, BackgroundColor = DatesBackgroundColor, TextColor = DatesTextColor, FontSize = DatesFontSize, BorderWidth = BorderWidth, BorderColor = BorderColor, FontAttributes = DatesFontAttributes, WidthRequest = ContentView.Width / 3 - BorderWidth, HeightRequest = ContentView.Height / 4 - BorderWidth }; b.Clicked += (sender, e) => { MonthYearButtonCommand?.Execute((sender as CalendarButton).Date.Value); MonthYearButtonClicked?.Invoke(sender, new DateTimeEventArgs { DateTime = (sender as CalendarButton).Date.Value }); if (EnableTitleMonthYearView) { StartDate = (sender as CalendarButton).Date.Value; PrevMonthYearView(); } }; details.Children.Add(b, c, r); } } details.WidthRequest = w; details.HeightRequest = h; ContentView.Children.Add(details); CalendarViewType = DateTypeEnum.Month; TitleLeftArrow.IsVisible = false; TitleRightArrow.IsVisible = false; Content = MainView; }); }
public void ShowYears() => Device.BeginInvokeOnMainThread(() => { Content = null; contentView.Children.Clear(); yearButtons.Clear(); var columDef = new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }; var rowDef = new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }; var details = new Grid { VerticalOptions = LayoutOptions.CenterAndExpand, RowSpacing = 0, ColumnSpacing = 0, Padding = 1, BackgroundColor = BorderColor }; details.ColumnDefinitions = new ColumnDefinitionCollection { columDef, columDef, columDef, columDef }; details.RowDefinitions = new RowDefinitionCollection { rowDef, rowDef, rowDef, rowDef }; for (var r = 0; r < YearsRow; r++) { for (var c = 0; c < YearsColumn; c++) { var t = (r * YearsColumn) + c + 1; var b = new CalendarButton { HorizontalOptions = LayoutOptions.CenterAndExpand, VerticalOptions = LayoutOptions.CenterAndExpand, Text = string.Format("{0}", StartDate.Year + (t - (YearsColumn * YearsRow / 2))), Date = new DateTime(StartDate.Year + (t - (YearsColumn * YearsRow / 2)), StartDate.Month, 1).Date, BackgroundColor = DatesBackgroundColor, TextColor = DatesTextColor, FontSize = DatesFontSize, FontAttributes = DatesFontAttributes, BorderWidth = BorderWidth, BorderColor = BorderColor, WidthRequest = (contentView.Width / YearsRow) - BorderWidth, HeightRequest = contentView.Height / YearsColumn - BorderWidth }; b.Clicked += (sender, e) => { MonthYearButtonCommand?.Execute((sender as CalendarButton).Date.Value); MonthYearButtonClicked?.Invoke(sender, new DateTimeEventArgs { DateTime = (sender as CalendarButton).Date.Value }); if (EnableTitleMonthYearView) { StartDate = (sender as CalendarButton).Date.Value; PrevMonthYearView(); } }; yearButtons.Add(b); details.Children.Add(b, c, r); } } details.WidthRequest = w; details.HeightRequest = h; contentView.Children.Add(details); CalendarViewType = DateTypeEnum.Year; TitleLeftArrow.IsVisible = true; TitleRightArrow.IsVisible = true; Content = mainView; });