예제 #1
0
        private void ArrangeCalendarDecorations(RadRect rect)
        {
            this.EnsureCalendarDecorations();

            double cellWidth  = rect.Width / this.ColumnCount;
            double cellHeight = rect.Height / this.RowCount;

            double gridLineThickness     = this.Calendar.GridLinesThickness;
            int    gridLineHalfThickness = (int)(gridLineThickness / 2);

            if ((this.Calendar.GridLinesVisibility & GridLinesVisibility.Horizontal) == GridLinesVisibility.Horizontal)
            {
                for (int rowIndex = 1; rowIndex < this.RowCount; rowIndex++)
                {
                    CalendarGridLine gridLine = this.GetDecorationByRowIndex(rowIndex);
                    gridLine.IsHorizontal = true;

                    // NOTE: We are not respecting rect.X / rect.Width values here for design purposes:
                    // If week numbers are visible the horizontal gridline should start rendering from the week number panel and not the calendar view.
                    gridLine.Arrange(new RadRect(this.layoutSlot.X, rect.Y + rowIndex * cellHeight - gridLineHalfThickness, this.layoutSlot.Width, gridLineThickness));
                }
            }

            if ((this.Calendar.GridLinesVisibility & GridLinesVisibility.Vertical) == GridLinesVisibility.Vertical)
            {
                for (int columnIndex = 1; columnIndex < this.ColumnCount; columnIndex++)
                {
                    CalendarGridLine gridLine = this.GetDecorationByColumnIndex(columnIndex);
                    gridLine.IsHorizontal = false;

                    gridLine.Arrange(new RadRect(rect.X + columnIndex * cellWidth - gridLineHalfThickness, rect.Y, gridLineThickness, rect.Height));
                }
            }
        }
        private void ArrangeTimerRulerLines(RadRect viewRect)
        {
            var    calendar    = this.Calendar;
            double heightCoeff = (double)calendar.multiDayViewSettings.TimerRulerTickLength.Ticks / (double)TimeSpan.FromHours(1).Ticks;

            int    tileLinesInterval = calendar.multiDayViewSettings.TimeLinesSpacing;
            double timeItemHeight    = tileLinesInterval * heightCoeff;

            double gridLineThickness     = calendar.GridLinesThickness;
            int    gridLineHalfThickness = (int)(gridLineThickness / 2);

            for (int hourIndex = 1; hourIndex <= this.timerRulerLines.Count; hourIndex++)
            {
                CalendarGridLine timeLine = this.timerRulerLines[hourIndex - 1];
                if ((calendar.GridLinesVisibility & GridLinesVisibility.Horizontal) == GridLinesVisibility.Horizontal)
                {
                    timeLine.Arrange(new RadRect(viewRect.X, viewRect.Y + hourIndex * timeItemHeight - gridLineHalfThickness, viewRect.Width, gridLineThickness));
                }
            }
        }