ScheduleSet.Calendars Namespace
GridCalendar Component
Calendar component for displaying larger time intervals with months displayed one below another in a grid. GridCalendar can be aligned in two ways - same weekdays in a column or the same date in a column.

GridCalendar Anatomy
Header - can contain some text and an icon. Header can be hidden. The appearance can be set through its own style properties.
Row Header - displays formattable name of the month. The appearance of the Row Header can be set through its own style properties
Column Header - it contains either the weekday name or the date, depending on GridCalendar alignment mode. Column Header appearance can be set through its own style properties. Each week day can have its own style defined.
Grid - the appearance can be set separately for normal days, selected days and holiday dates. Selected dates are defined through the SelectedDates collection, holiday dates through HolidayDates collection.
Footer - can be hidden. It can contain some text, usually today's date, which can be used as a button for selecting today's date. The appearance can be set through its own style properties.
Today's date - can be highlighted and has its own style definition.
GridCalendar Appearance
GridCalendar provides rich style hierarchy for setting the desired appearance. It allows to define style for each individual part, including Header, Footer, Row and Column Headers. Days have one common style and multiple style options for defining special appearance, such as selected days, holidays, days of week, days with special events etc. The space between days in a grid can be set with CalendarGap property.
Several predefined styles are available in designer with possibility to be easily turned to different color scheme with the ThemeStyle setting. The Theme Style allows you to update the color scheme of all the styles by simply dragging a slider in a designer.

Zoom Image
Months styled
GridCalendar allows you to display individual months in different styles, using the MonthRanges and MonthRangeStyle definitions. Every MonthRange consists of StartYear/StartMonth and EndYear/EndMonth definition. When the Year definition is left blank, the range is applied for all years. MonthRangeStyle definition allows to set month background, Row Header style and a day shape.

Individual dates styled
It is possible to set even the apperance of individual days using the DateItems and DateItemStyle definitions. Each day can contain multiple events defined as DateItem structure. DateItem definition consists mainly of date and text displayed in a tooltip. DateItem can have its style - either it can use one of styles defined in DateItemStyles collection (StyleName property then contains the name of predefined style) or it can have its own style defined (then UseLocalStyle property must be set to true). With Calendar.ShowDateItem property set to true the image or text abbreviation can be displayed directly in the day cell.

The date can contain multiple DateItems. When the items are of different appearance, styles are combined when possible, so for example a red border and a blue background can be displayed at a time.
Reccuring events and events lasting more than one day are not supported at this version and must be handled manually.
Data binding
DateItems collection can be filled using data binding. After specifying necessary DisplayMemberDate and DisplayMemberText members any DataTable or object collection can be bound to calendar. Dates are then populated with events from the data source. Data binding would not be complete without having the possibility to style the items - this can be done with setting the DisplayMemberImageIndex and the DisplayMemberStyle properties.
Date range
The range of displayable dates can be set through MinDate and MaxDate properties. The information about currently displayed range is always accessible in FirstVisibleDate and LastVisibleDate properties.
The initial setting of first displayed date can be done with ShowMode property. ShowMode.MinDate option shows the beginning of the date range, while ShowMode.MaxDate shows its end. ShowMode.Today sets actual month as a start month. Last option is ShowMode.DefaultDate which shows the month stored in DefaultDate property as a first visible month.
Navigation
Multiple navigation concepts are available. For vertical scrolling the ScrollBar or NavigationBar can be displayed on the right side of calendar. For navigation between months there can be dropdown button displayed that opens a new component called MonthSelector. You achieve this through the NavigationMode and ShowMonthSelector properties. The MonthSelector has its own branch in calendar style definition.
Selection
Multiple day selection modes are available through the SelectionMode property. SingleDay mode makes the last clicked date selected. Continuous mode enables to select the date range. Random mode allows user to select multiple dates and ranges using Ctrl and Shift keys, same as during standard Windows selection. The maximum selected day count can be defined with a MaxSelectionCount property. Selection can also be disabled at all.

A style for selected days can be defined. It has a Transparency setting, so the original day appearance may be seen even if the date is selected.
Events
GridCalendar contains rich event model which enables you to handle a number of user actions. All calendar parts, including individual days, provide information about user mouse actions and clicks. You can also get information about selection changes, calendar navigation and resizing. The appearance of any day can be updated during data binding using the ItemBinding event.