コード例 #1
0
        internal override RadRect ArrangeOverride(RadRect rect)
        {
            this.layoutSlot        = rect;
            this.dayViewLayoutSlot = this.UpdateAnimatableContentClip(rect);
            double cellContentWidth = this.dayViewLayoutSlot.Width / this.ColumnCount * this.BufferItemsCount * 2;

            this.timeRulerWidth = this.dayViewLayoutSlot.X;

            this.dayViewLayoutSlot.Width       += cellContentWidth;
            this.Calendar.AnimatableContentClip = this.dayViewLayoutSlot;

            if (this.CalendarCells == null || this.CalendarCells.Count == 0)
            {
                this.updateFlag = MultiDayViewUpdateFlag.All;
            }

            if (this.updateFlag == MultiDayViewUpdateFlag.All)
            {
                this.ArrangeCalendarDecorations(this.dayViewLayoutSlot);
                this.ArrangeCalendarContent(this.dayViewLayoutSlot);
                this.ArrangeCalendarHeaders(this.dayViewLayoutSlot);
            }

            rect.Width += cellContentWidth;
            this.ArrangeCalendarTimerRuler(rect);

            if (this.updateFlag != MultiDayViewUpdateFlag.AffectsCurrentTimeIndicator)
            {
                this.ArrangeMultiDayViewCalendarDecorations(this.dayViewLayoutSlot);
            }

            return(rect);
        }
コード例 #2
0
        internal void Invalidate(MultiDayViewUpdateFlag flag)
        {
            RadCalendar calendar = this.owner;

            if (calendar != null && calendar.IsTemplateApplied && calendar.Model.IsTreeLoaded)
            {
                if (calendar.IsLoaded)
                {
                    CalendarMultiDayViewModel multiDayViewModel = this.owner.Model.multiDayViewModel;
                    if (flag == MultiDayViewUpdateFlag.All)
                    {
                        multiDayViewModel.CalendarCells?.Clear();
                        multiDayViewModel.CalendarHeaderCells?.Clear();
                        multiDayViewModel.CalendarDecorations?.Clear();
                        multiDayViewModel.allDayAppointmentInfos?.Clear();
                        multiDayViewModel.appointmentInfos?.Clear();

                        calendar.allDayAreaLayer?.ClearRealizedAppointmentVisuals();
                        calendar.timeRulerLayer?.ClearRealizedAppointmentVisuals();
                        calendar.contentLayer?.RecycleAllVisuals();
                    }

                    if (flag == MultiDayViewUpdateFlag.AffectsTimeRuler)
                    {
                        this.RecycleTimeRulerVisuals();
                        multiDayViewModel.timeRulerItems?.Clear();
                        multiDayViewModel.timerRulerLines?.Clear();
                        multiDayViewModel.appointmentInfos?.Clear();
                    }

                    if (flag == MultiDayViewUpdateFlag.AffectsAppointments)
                    {
                        multiDayViewModel.appointmentInfos?.Clear();
                        multiDayViewModel.allDayAppointmentInfos?.Clear();
                        calendar.allDayAreaLayer?.ClearRealizedAppointmentVisuals();
                        calendar.timeRulerLayer?.ClearRealizedAppointmentVisuals();
                    }

                    if (flag == MultiDayViewUpdateFlag.AffectsSpecialSlots)
                    {
                        multiDayViewModel.specialSlots?.Clear();
                        calendar.timeRulerLayer?.ClearRealizedSlotVisuals();
                    }

                    calendar.Model.multiDayViewModel.updateFlag = flag;
                    calendar.timeRulerLayer.shouldArrange       = true;
                    calendar.allDayAreaLayer.shouldArrange      = true;
                }

                calendar.Invalidate();
            }
        }
コード例 #3
0
        private void UpdateAppearance(MultiDayViewUpdateFlag flag)
        {
            RadCalendar calendar = this.owner;

            if (calendar != null && calendar.IsTemplateApplied && calendar.Model.IsTreeLoaded)
            {
                if (calendar.IsLoaded)
                {
                    if (flag == MultiDayViewUpdateFlag.AffectsAppointments)
                    {
                        XamlAllDayAreaLayer allDayArea = this.owner.allDayAreaLayer;
                        allDayArea.UpdatePanelBackground(this.AllDayAreaBackground);
                    }

                    if (flag == MultiDayViewUpdateFlag.AffectsTimeRuler)
                    {
                        XamlMultiDayViewLayer timeRulerArea = this.owner.timeRulerLayer;
                        timeRulerArea.UpdatePanelsBackground(this.TimelineBackground);
                    }
                }
            }
        }