DEV Community

Cover image for Building RTL-Friendly Apps with .NET MAUI: Introducing MauiPersianToolkit – Persian/Hijri Calendar, RTL & Ready-to-Use Controls
Reza Shaban
Reza Shaban

Posted on

Building RTL-Friendly Apps with .NET MAUI: Introducing MauiPersianToolkit – Persian/Hijri Calendar, RTL & Ready-to-Use Controls

Hey .NET community! 👋

If you've ever tried building a cross-platform app in .NET MAUI that needs to support RTL language properly, you probably faced these pains:

  • No native Persian/Hijri calendar support in standard controls
  • RTL layout headaches in Entry, Editor, Picker, dialogs, etc.
  • Date conversion between Gregorian ↔ Jalali that's always messy
  • Missing beautiful Persian fonts out of the box
  • Lots of boilerplate for simple things like Persian alerts

Good news: I built MauiPersianToolkit exactly to fix these! 🚀

What is MauiPersianToolkit?

A lightweight, free & open-source (MIT) library for .NET MAUI packed with Persian-focused controls and helpers.

Key Features (as of v2.0.7 – January 2026):

  • PersianDatePicker – Single date, multi-date & range selection
  • Supports 3 calendars at once: Jalali (Persian), Gregorian & Hijri
  • RTL-ready controls: TreeView, TabView, Expander, CheckBox, CircleImage, SlideButton...
  • Persian Entry & Editor with full RTL and right language input
  • Beautiful Persian Dialogs: Alert, Confirm, Prompt, Custom
  • Date converters for easy data-binding
  • Built-in IranianSans font & FontAwesome icons
  • Fully tested (20+ unit tests) & works on Android, iOS, Windows & macOS

Super Quick Setup (1 minute!)

dotnet add package MauiPersianToolkit
Enter fullscreen mode Exit fullscreen mode

Then in MauiProgram.cs:

builder
    .UseMauiApp<App>()
    .UseMauiPersianToolkit();  // That's it!
Enter fullscreen mode Exit fullscreen mode

Real-World Example: Persian Range DatePicker

<toolkit:PersianDatePicker 
    Mode="Range"
    MinimumDate="{x:Static sys:DateTime.Today}"
    MaximumDate="{x:Static sys:DateTime.Today.AddYears(1)}"
    SelectedDate="{Binding SelectedDate}"
    SelectedDates="{Binding SelectedDates}"
    FlowDirection="RightToLeft" />
Enter fullscreen mode Exit fullscreen mode

Or grab values in C#:

var start = MyDatePicker.SelectedDates.FirstOrDefault()?.ToLongDateString(); // Beautiful Persian output!
Enter fullscreen mode Exit fullscreen mode

Why Choose This Over Commercial Controls?

  • 100% free & open-source (unlike Syncfusion, Telerik...)
  • Lightweight & mobile-optimized
  • Special focus on Iranian/Persian developer needs + RTL perfection
  • Actively maintained & up-to-date with .NET 9 / MAUI latest

It already has growing interest in the Persian .NET community — let's make it global! 🌍

Join the Fun!

  • ⭐ Star the repo on GitHub
  • Try it in your project & drop feedback/issues
  • Contribute! (RTL improvements, new controls, AI date parsing coming soon...)

GitHub: https://github.com/RezaShaban/MauiPersianToolkit

NuGet: https://www.nuget.org/packages/MauiPersianToolkit

Can't wait to see beautiful Persian apps built with this toolkit! 🇮🇷

What Persian/RTL challenges have you faced in MAUI? Share below! 👇

Top comments (0)