A newer version of this page is available. Switch to the current version.

Recurrence

  • 3 minutes to read

Overview

Appointments can be either simple occurring only once in the specified time interval), or recurring. To determine whether an appointment is recurring, use the AppointmentItem.IsRecurring property.

Different types of appointments can be recurring. Use the AppointmentItem.Type property to determine an appointment's type. A recurring appointment can either be a base (a Pattern) or a recurring instance (occurrence). Recurring instances can either be a regular Occurrence, or an exception (a ChangedOccurrence or a DeletedOccurrence). A regular recurring appointment is visually indicated with the WPFScheduler_Icon_Recurrence icon; an exception is visually indicated with the WPFScheduler_Icon_ChangedRecurrence icon. The following sections describe the differences between these recurring appointments.

Base Recurring Appointment and Recurrence Pattern

Every recurring appointment's series is based on the pattern appointment, available using the AppointmentItem.RecurrencePattern property of all other appointments in the series. The Pattern appointment contains information about a recurrence: it sets the recurrence series' start date and time and specifies the rule according to which a series is repeated. This recurrence rule is accessed via the pattern's AppointmentItem.RecurrenceInfo property.

The Pattern appointment is stored in the SchedulerControl.AppointmentItems collection. All other Occurrence appointments (except for ChangedOccurrence and DeletedOccurrence) are not stored in any collection. They are automatically generated at runtime according to the pattern appointment's RecurrenceInfo.

NOTE

Recurring appointments' series can be either finite or infinite. Occurrence appointments are not stored in any collection to avoid a stack overflow for infinitive recurring series.

End-users can edit an appointment's recurrence pattern at runtime using the Recurrence Window.

RecurrenceWindow

The following recurrence types are supported:

Type Example
RecurrenceType.Minutely How to: Create Minutely Recurrence
RecurrenceType.Hourly How to: Create Hourly Recurrence
RecurrenceType.Daily How to: Create Daily Recurrence
RecurrenceType.Weekly How to: Create Weekly Recurrence
RecurrenceType.Monthly How to: Create Monthly Recurrence
RecurrenceType.Yearly How to: Create Yearly Recurrence

Recurrence Exceptions

Only the Pattern appointment is stored in the underlying data source. Regular appointments in the recurring series (Occurrences) are generated at runtime; you cannot find them in the SchedulerControl.AppointmentItems collection and they are not saved to the data source.

However, a recurring series may contain several exceptions. Exceptions are the Occurrence appointments which have either been changed or deleted and no longer meet the common recurrence rule the pattern appointment specifies.

WPF Scheduler_Recurring_Appointments_and_Exceptions

NOTE

All occurrences within a recurring series are associated with the same resource. A changed occurrence can differ from its pattern by a subject, description, label, status, start time, and end time.

A collection of exceptions for a particular recurrence pattern is accessible using the pattern's AppointmentItem.GetExceptions method. This collection contains both AppointmentType.ChangedOccurrence and AppointmentType.DeletedOccurrence appointment types. Note that exceptions replace regular occurrences: the Occurrence appointment with the same AppointmentItem.RecurrenceIndex is not generated for each appointment in the exception's collection.

NOTE

Call the AppointmentItem.RestoreOccurrence method to restore the original occurrence from an exception.