Calendar Component Samples

The Calendar control displays a one-month calendar and lets users select dates and navigate between months. In Web Forms this was <asp:Calendar>.


Basic Calendar

<March 2026>
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

Selected Date: 03/02/2026

Code:

<Calendar @bind-SelectedDate="selectedDate" />

Selection Modes

None — Display Only

<March 2026>
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

Day — Single Day (Default)

<March 2026>
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

Selected: 03/02/2026

DayWeek — Select Entire Weeks

<March 2026>
SunMonTueWedThuFriSat
>>1234567
>>891011121314
>>15161718192021
>>22232425262728
>>2930311234
>>567891011

Selected: 03/02/2026

DayWeekMonth — Select Weeks or Month

>>
<March 2026>
SunMonTueWedThuFriSat
>>1234567
>>891011121314
>>15161718192021
>>22232425262728
>>2930311234
>>567891011

Selected: 03/02/2026

Code:

<Calendar SelectionMode="DayWeek" @bind-SelectedDate="weekDate" />
<Calendar SelectionMode="DayWeekMonth" @bind-SelectedDate="monthDate" />

Display Options

Grid Lines

<March 2026>
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

Without Title

SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

Without Day Header

<March 2026>
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

Code:

<Calendar ShowGridLines="true" />
<Calendar ShowTitle="false" />
<Calendar ShowDayHeader="false" />

Day Name & Title Formats

Full Day Names

<March 2026>
SundayMondayTuesdayWednesdayThursdayFridaySaturday
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

First Letter Only

<March 2026>
SMTWTFS
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

Month-Only Title

<March>
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

Code:

<Calendar DayNameFormat="Full" />
<Calendar DayNameFormat="FirstLetter" />
<Calendar TitleFormat="Month" />

Custom Navigation Text

« PrevMarch 2026Next »
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

Code:

<Calendar NextMonthText="Next &raquo;" PrevMonthText="&laquo; Prev" />

Styled Calendar

Apply CSS classes to title, selected day, today, and weekend cells:

<March 2026>
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

Code:

<Calendar CssClass="styled-calendar"
          TitleStyleCss="calendar-title"
          SelectedDayStyleCss="selected-day"
          TodayDayStyleCss="today-day"
          ShowGridLines="true" />

TableItemStyle Sub-Components

The recommended approach uses child sub-components instead of CSS-class strings. Sub-components support BackColor, ForeColor, Font, and more:

<March 2026>
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

Code:

<Calendar ShowGridLines="true" @bind-SelectedDate="date">
    <TitleStyleContent>
        <CalendarTitleStyle CssClass="subcmp-title" />
    </TitleStyleContent>
    <DayHeaderStyleContent>
        <CalendarDayHeaderStyle CssClass="subcmp-day-header" />
    </DayHeaderStyleContent>
    <SelectedDayStyleContent>
        <CalendarSelectedDayStyle CssClass="subcmp-selected-day" />
    </SelectedDayStyleContent>
</Calendar>

Event Handling

Track selection changes and month navigation, matching the Web Forms SelectionChanged and VisibleMonthChanged events:

<March 2026>
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
2930311234
567891011

Selected: 03/02/2026

Selection changed 0 time(s)

Month navigated 0 time(s)

Code:

<Calendar @bind-SelectedDate="eventDate"
          OnSelectionChanged="HandleSelectionChanged"
          OnVisibleMonthChanged="HandleMonthChanged" />

@code {
    void HandleSelectionChanged() => selectionChangedCount++;
    void HandleMonthChanged(CalendarMonthChangedArgs args) => monthChangedCount++;
}