Plugin.Maui.NativeCalendar
2.0.0
dotnet add package Plugin.Maui.NativeCalendar --version 2.0.0
NuGet\Install-Package Plugin.Maui.NativeCalendar -Version 2.0.0
<PackageReference Include="Plugin.Maui.NativeCalendar" Version="2.0.0" />
<PackageVersion Include="Plugin.Maui.NativeCalendar" Version="2.0.0" />
<PackageReference Include="Plugin.Maui.NativeCalendar" />
paket add Plugin.Maui.NativeCalendar --version 2.0.0
#r "nuget: Plugin.Maui.NativeCalendar, 2.0.0"
#:package Plugin.Maui.NativeCalendar@2.0.0
#addin nuget:?package=Plugin.Maui.NativeCalendar&version=2.0.0
#tool nuget:?package=Plugin.Maui.NativeCalendar&version=2.0.0

Plugin.Maui.NativeCalendar
Plugin.Maui.NativeCalendar provides the ability to implement native calendar functionality in your .NET MAUI app.
iOS
<img src="https://raw.githubusercontent.com/edgiardina/Plugin.Maui.NativeCalendar/main/ios-example.png" width=200>
Android
<img src="https://raw.githubusercontent.com/edgiardina/Plugin.Maui.NativeCalendar/main/android-example.png" width=200>
Install Plugin
Available on NuGet.
Install with the dotnet CLI: dotnet add package Plugin.Maui.NativeCalendar, or through the NuGet Package Manager in Visual Studio.
Supported Platforms
| Platform | Minimum Version Supported |
|---|---|
| iOS | 16+ |
| Android | 5.0 (API 21) |
API Usage
Plugin.Maui.NativeCalendar provides the NativeCalendar class that displays a native calendar view in your .NET MAUI app.
The calendar view on iOS is implemented using UICalendarView.
The calendar view on Android is implemented using MaterialCalendar, a class used in the MaterialDatePicker from the Android Material library.
Sizing
The calendar sizes itself on iOS and Android. A HeightRequest is optional. Use it only to override the natural height.
- iOS reports the intrinsic size of
UICalendarView. - Android reports the height of the Material date picker calendar: the month navigation, the weekday names and six weeks. The height is the same for each month, so the layout does not move when the user changes the month.
Platform feature matrix
| Feature | iOS (UICalendarView) |
Android (MaterialCalendar) |
|---|---|---|
| Single date selection | Yes | Yes |
Event indicator dots (Events, EventIndicatorColor) |
Yes | Yes |
TintColor for today and selected day |
Yes | Yes |
MinimumDate / MaximumDate |
Yes | Yes |
Self-sizing without a HeightRequest |
Yes | Yes |
Shows the month of SelectedDate when you set it in code |
Yes | Yes |
| Light and dark mode, also when the mode changes while the app runs | Yes | Yes |
| Year picker from the month title | Yes | Yes |
| Event titles in the screen reader description of a day | No | Yes |
| Minimum OS | iOS 16 | API 21 |
The Events collection updates the calendar when the property is reassigned and when an ObservableCollection bound to it is changed in place.
Android notes
- The calendar uses the Material theme of the app. If
TintColoris not set, the selected day usescolorPrimaryof the theme. TintColorchanges the selected day, the number of today, and the navigation arrows. The ring around today and the year picker keep the colors of the theme.- The calendar does not support fragment state restore. Keep the default of .NET MAUI, where
AllowFragmentRestoreof the activity isfalse. MaterialCalendaris a part of the Material library that Google does not document as public API. An update of the Material library can change it. Test the calendar when you updateXamarin.Google.Android.Materialor .NET MAUI.
Permissions
iOS
No permissions are needed for iOS.
Android
No permissions are needed for Android.
Dependency Injection
In order to enable the plugin, you need to call the UseNativeCalendar method in the MauiProgram.cs file of your .NET MAUI app.
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseNativeCalendar() // <--- Add this line
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
Native Calendar Implementation
You'll need to add a xmlns namespace to your XAML page:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Plugin.Maui.NativeCalendar.Sample.MainPage"
xmlns:nativecalendar="clr-namespace:Plugin.Maui.NativeCalendar;assembly=Plugin.Maui.NativeCalendar"
Title="Native Calendar Plugin">
And then consume your calendar in the XAML page:
<nativecalendar:NativeCalendarView MaximumDate="{Binding MaximumDate}"
MinimumDate="{Binding MinimumDate}"
SelectedDate="{Binding SelectedDate}"
Events="{Binding Events}"
EventIndicatorColor="{Binding EventIndicatorColor}"
DateChanged="NativeCalendarView_DateChanged" />
Events
DateChanged
Occurs when SelectedDate changes. This includes a tap on a day and a change from code or from a binding.
Commands
DateChangedCommand
Command that is executed when SelectedDate changes. The parameter is the DateChangedEventArgs.
Properties
TintColor
Color of the selected day and of today. The default is null, which uses the accent color of the platform: the tint color on iOS and colorPrimary of the app theme on Android.
EventIndicatorColor
Color of the Event Indicator, a dot that appears below the date number indicating there is an event on that date. The default is null, which uses the TintColor.
MinimumDate
Lowest date that can be selected on the calendar. The date itself can be selected.
MaximumDate
Greatest date that can be selected on the calendar. The date itself can be selected.
SelectedDate
Date that is currently selected on the calendar. The calendar selects full days, so the time of day is removed. A date outside MinimumDate and MaximumDate moves to the nearest date in the range. The default is today.
Events
List of dates that have events. The calendar will display a dot below the date number to indicate there is an event on that date. An event shows on each day from its StartDate to its EndDate. An event with an EndDate before its StartDate shows on its StartDate only.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0-android36.0 is compatible. net10.0-ios26.0 is compatible. net10.0-maccatalyst26.0 is compatible. |
-
net10.0-android36.0
- Microsoft.Maui.Controls (>= 10.0.10)
-
net10.0-ios26.0
- Microsoft.Maui.Controls (>= 10.0.10)
-
net10.0-maccatalyst26.0
- Microsoft.Maui.Controls (>= 10.0.10)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.0 | 181 | 10/3/2026 |
| 1.0.6 | 245 | 8/8/2026 |
| 1.0.5 | 121 | 8/8/2026 |
| 1.0.4 | 707 | 11/18/2025 |
| 1.0.3 | 465 | 11/18/2025 |
| 1.0.2 | 466 | 11/18/2025 |
| 1.0.1 | 360 | 11/17/2025 |
| 0.9.0 | 950 | 11/15/2024 |
| 0.8.2 | 256 | 10/30/2024 |
| 0.8.1 | 193 | 10/30/2024 |
| 0.8.0 | 200 | 10/30/2024 |
| 0.1.8 | 216 | 10/25/2024 |
| 0.1.7 | 201 | 10/25/2024 |
| 0.1.6 | 215 | 10/24/2024 |
| 0.1.5 | 221 | 10/21/2024 |
| 0.1.4 | 234 | 10/21/2024 |
| 0.1.3 | 228 | 10/20/2024 |
| 0.1.2 | 210 | 10/19/2024 |
| 0.1.1 | 229 | 10/19/2024 |