/// <summary> /// Helper method /// </summary> /// <param name="colorItems"></param> /// <param name="square"></param> private void setSquare(List <SolidColorBrush> colorItems, TCalendarSquare square) { StackPanel sp = (square as DefaultSmallCalendarSquare).GetContent() as StackPanel; //if we can get the existing stack panel if (sp != null) { //clear any items in it sp.Children.Clear(); } //otherwise we need to create the stack panel else { //make the stack panel, oriented horizontal sp = new StackPanel() { Orientation = Orientation.Horizontal, Margin = new Windows.UI.Xaml.Thickness(6), VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Bottom, HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Left }; //set it to the left column Grid.SetColumn(sp, 0); //add the stack panel (square as DefaultSmallCalendarSquare).SetContent(sp); } //now add a circle for each item, in order for (int i = 0; i < colorItems.Count; i++) { sp.Children.Add(new Ellipse() { Fill = colorItems[i], Width = _diameterOfCircles, Height = _diameterOfCircles, Margin = new Windows.UI.Xaml.Thickness(0, 0, _diameterOfCircles, 0) }); } }
private void setSquareOverlay(SolidColorBrush overlayBrush, TCalendarSquare square) { (square as DefaultSmallCalendarSquare).SetBackgroundOverlayColor(overlayBrush); }
protected void Initialize() { base.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Stretch; base.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Stretch; Grid inner = new Grid(); for (int i = 0; i < 7; i++) { inner.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1 / 7.0, GridUnitType.Star) }); } inner.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); for (int i = 0; i < 6; i++) { inner.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1 / 6.0, GridUnitType.Star) }); } base.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); base.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); //add header FrameworkElement header = GenerateCalendarHeader(DisplayMonth); Grid.SetRow(header, 0); base.Children.Add(header); //add grid for calendar Grid.SetRow(inner, 1); base.Children.Add(inner); //add the day headers DayOfWeek dayHeader = FirstDayOfWeek; for (int i = 0; i < 7; i++, dayHeader++) { addDay(dayHeader, inner, i); } //add the days DateTime[,] array = CalendarArray.Generate(DisplayMonth, FirstDayOfWeek); for (int col = 0; col < 7; col++) { for (int row = 0; row < 6; row++) { DateTime date = array[row, col]; TCalendarSquare square = GenerateCalendarSquare(date); _calendarSquares[date] = square; if (date.Date == DateTime.Today) { square.Type = TCalendarSquare.DisplayType.Today; } else if (date.Month == DisplayMonth.Month) { square.Type = TCalendarSquare.DisplayType.ThisMonth; } else { square.Type = TCalendarSquare.DisplayType.OtherMonth; } //add extra margin for side squares //left if (col == 0) { if (row == 5) { square.Margin = new Thickness(square.Margin.Left * 2, square.Margin.Top, square.Margin.Right, square.Margin.Bottom * 2); } else { square.Margin = new Thickness(square.Margin.Left * 2, square.Margin.Top, square.Margin.Right, square.Margin.Bottom); } } //right else if (col == 6) { if (row == 5) { square.Margin = new Thickness(square.Margin.Left, square.Margin.Top, square.Margin.Right * 2, square.Margin.Bottom * 2); } else { square.Margin = new Thickness(square.Margin.Left, square.Margin.Top, square.Margin.Right * 2, square.Margin.Bottom); } } //bottom else if (row == 5) { square.Margin = new Thickness(square.Margin.Left, square.Margin.Top, square.Margin.Right, square.Margin.Bottom * 2); } Grid.SetColumn(square, col); Grid.SetRow(square, row + 1); //first row is Mon, Tues, Wed... inner.Children.Add(square); square.Tapped += square_Tapped; } } FrameworkElement overlay = GenerateOverlay(); if (overlay != null) { Grid.SetRowSpan(overlay, 2); base.Children.Add(overlay); } }