/// <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);
 }
示例#3
0
        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);
            }
        }