agentsclimarketplace

Syncfusion winui calendar

Skill syncfusion/winui-ui-components-skills/skills/syncfusion-winui-calendar

Skills for Syncfusion WinUI controls. Enable AI-assisted development with comprehensive documentation, code examples, and best practices for 100+ UI controls including DataGrid, Charts, Scheduler, and more.

Install
npx -y skills add syncfusion/winui-ui-components-skills --skill syncfusion-winui-calendar

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Implements Syncfusion WinUI Calendar (SfCalendar) control for date selection in desktop applications. Use this when building date pickers, date selection interfaces (single, multiple, or range), month/year navigation, or calendar views. This skill covers calendar configuration, date restrictions, blackout dates, week numbers, localization, and customization for Windows desktop applications.

SKILL.md

12.3 KB, as published. Nobody here has run it

WinUI Calendar (SfCalendar)

Comprehensive guide for implementing the Syncfusion WinUI Calendar (SfCalendar) control for date selection in Windows desktop applications. The Calendar control supports single, multiple, and range date selection with extensive customization options, navigation between different views, date restrictions, and localization.

When to Use This Skill

Use this skill when you need to:

  • Create calendar controls for date selection in WinUI desktop applications
  • Select dates in single, multiple, or range modes
  • Navigate views between month, year, decade, and century
  • Restrict dates using min/max dates and blackout dates
  • Customize UI with templates, special date highlighting, and styling
  • Localize calendars for different cultures and languages
  • Display week numbers with various calculation rules
  • Handle date selection events for validation or business logic
  • Implement accessible date pickers with keyboard navigation
  • Troubleshoot calendar rendering or data binding issues

Component Overview

SfCalendar is the primary date selection control for WinUI desktop applications, offering:

  • Selection Modes: Single, Multiple, Range, or None
  • View Navigation: Month, Year, Decade, and Century views
  • Date Restrictions: MinDate, MaxDate, and BlackoutDates collections
  • Customization: Cell templates, special date highlighting, and theme integration
  • Localization: Support for multiple calendar types and cultures
  • Week Numbers: Configurable week numbering with ISO 8601 support
  • Keyboard Support: Full keyboard navigation and accessibility
  • Data Binding: MVVM-friendly with SelectedDate and SelectedDates binding

Control Structure:

  • Month view with day cells (default)
  • Year view with month cells
  • Decade view with year cells
  • Century view with decade cells
  • Header for navigation and current view title
  • Navigation buttons for scrolling

Documentation and Navigation Guide

Getting Started

πŸ“„ Read: references/getting-started.md

  • Creating a WinUI 3 desktop application
  • Installing Syncfusion.Calendar.WinUI NuGet package
  • Adding Calendar control in XAML
  • Adding Calendar control in C#
  • Basic date selection
  • Control structure overview

Selection Features

πŸ“„ Read: references/selection.md

  • Selection modes: None, Single, Multiple, Range
  • SelectedDate property (single selection)
  • SelectedDates collection (multiple/range selection)
  • Programmatic date selection
  • Selection changed events
  • Data binding selected dates

Navigation and Display

πŸ“„ Read: references/navigation.md

  • Display modes: Month, Year, Decade, Century
  • Navigating between views
  • SetDisplayDate method to bring dates into view
  • Min/Max display mode restrictions
  • Selection based on view restrictions
  • Navigation direction (vertical/horizontal scrolling)

Date Restrictions

πŸ“„ Read: references/date-restrictions.md

  • MinDate and MaxDate properties
  • Restricting selectable date ranges
  • BlackoutDates collection
  • Blocking specific dates from selection
  • Validating date selection
  • Styling disabled dates

Localization and Formatting

πŸ“„ Read: references/localization-formatting.md

  • Culture and language support
  • FormatString for custom date formats
  • Abbreviated day and month names
  • RTL (Right-to-Left) support
  • FlowDirection property
  • Date formatting patterns

UI Customization

πŸ“„ Read: references/customization.md

  • Cell templates (DataTemplate)
  • Special date highlighting with icons
  • Custom cell styling
  • Header customization
  • Background and foreground colors
  • Border and appearance customization
  • Theme integration

Week Numbers

πŸ“„ Read: references/week-numbers.md

  • ShowWeekNumbers property
  • WeekNumberRule options
  • Week number formatting
  • FirstDay, FirstFourDayWeek, FirstFullWeek rules
  • Culture-specific week calculations

Quick Start Example

Here's a minimal working example to get started:

1. Add Namespace

XAML:

<Window xmlns:calendar="using:Syncfusion.UI.Xaml.Calendar">

C#:

using Syncfusion.UI.Xaml.Calendar;

2. Create Basic Calendar (XAML)

<Window
    x:Class="CalendarApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:calendar="using:Syncfusion.UI.Xaml.Calendar">
    
    <Grid>
        <calendar:SfCalendar x:Name="sfCalendar" />
    </Grid>
</Window>

3. Or Create Programmatically (C#)

using Syncfusion.UI.Xaml.Calendar;

namespace CalendarApp
{
    public sealed partial class MainWindow : Window
    {
        public MainWindow()
        {
            this.InitializeComponent();
            
            // Create calendar programmatically
            SfCalendar sfCalendar = new SfCalendar();
            this.Content = sfCalendar;
        }
    }
}

4. Select a Date (Optional)

// Select today's date
sfCalendar.SelectedDate = DateTimeOffset.Now;

// Or select a specific date
sfCalendar.SelectedDate = new DateTimeOffset(new DateTime(2026, 3, 22));

Common Patterns

Pattern 1: Single Date Selection

<calendar:SfCalendar 
    x:Name="calendar"
    SelectionMode="Single"
    SelectedDate="{x:Bind ViewModel.SelectedDate, Mode=TwoWay}" />
// Access selected date
DateTimeOffset? selected = calendar.SelectedDate;

Pattern 2: Multiple Date Selection

<calendar:SfCalendar 
    x:Name="calendar"
    SelectionMode="Multiple"
    SelectedDates="{x:Bind ViewModel.SelectedDates, Mode=TwoWay}" />
// Access multiple selected dates
DateTimeOffsetCollection selectedDates = calendar.SelectedDates;

Pattern 3: Date Range Selection

<calendar:SfCalendar 
    x:Name="calendar"
    SelectionMode="Range" />

Pattern 4: Restrict Date Range

<calendar:SfCalendar 
    x:Name="calendar"
    MinDate="2026-01-01"
    MaxDate="2026-12-31" />
// Set date restrictions in code
calendar.MinDate = new DateTimeOffset(new DateTime(2026, 1, 1));
calendar.MaxDate = new DateTimeOffset(new DateTime(2026, 12, 31));

Pattern 5: Block Specific Dates

// Create blackout dates collection
DateTimeOffsetCollection blackoutDates = new DateTimeOffsetCollection();
blackoutDates.Add(new DateTimeOffset(new DateTime(2026, 3, 25))); // Holiday
blackoutDates.Add(new DateTimeOffset(new DateTime(2026, 12, 25))); // Christmas

calendar.BlackoutDates = blackoutDates;

Pattern 6: Navigate to Specific Month

// Navigate to a specific date's month
calendar.SetDisplayDate(new DateTimeOffset(new DateTime(2026, 6, 15)));

Pattern 7: Restrict Navigation to Year View

<calendar:SfCalendar 
    x:Name="calendar"
    MinDisplayMode="Month"
    MaxDisplayMode="Year" />

Pattern 8: ViewModel Data Binding

public class CalendarViewModel : INotifyPropertyChanged
{
    private DateTimeOffset? selectedDate;
    
    public DateTimeOffset? SelectedDate
    {
        get => selectedDate;
        set
        {
            selectedDate = value;
            OnPropertyChanged(nameof(SelectedDate));
        }
    }
    
    public event PropertyChangedEventHandler PropertyChanged;
    
    protected void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}
<calendar:SfCalendar 
    SelectedDate="{x:Bind ViewModel.SelectedDate, Mode=TwoWay}" />

Key Properties Reference

Selection Properties

PropertyTypeDescription
SelectedDateDateTimeOffset?Gets or sets the selected date (single selection mode)
SelectedDatesDateTimeOffsetCollectionGets or sets the collection of selected dates (multiple/range modes)
SelectedRangeDateTimeOffsetRangeGets the selected date range when SelectionMode is Range
SelectionModeCalendarSelectionModeDate selection mode: None, Single, Multiple, Range
SelectionHighlightModeSelectionHighlightModeHighlight style for selected dates: Outline, Filled
SelectionShapeSelectionShapeShape of selection indicator: Circle, Rectangle

Date Restriction Properties

PropertyTypeDescription
MinDateDateTimeOffsetMinimum selectable date (default: 1/1/1920)
MaxDateDateTimeOffsetMaximum selectable date (default: 12/31/2120)
BlackoutDatesDateTimeOffsetCollectionCollection of non-selectable (blocked) dates

Display and Navigation Properties

PropertyTypeDescription
DisplayModeCalendarDisplayModeCurrent view: Month, Year, Decade, Century
MinDisplayModeCalendarDisplayModeMinimum view level users can navigate to
MaxDisplayModeCalendarDisplayModeMaximum view level users can navigate to
NavigationDirectionCalendarNavigationDirectionScroll direction within view: Vertical, Horizontal
OutOfScopeVisibilityOutOfScopeVisibilityShow/hide dates from adjacent months: Enabled, Hidden
HeaderInfoobjectCustom header content for the calendar

Localization and Formatting Properties

PropertyTypeDescription
CalendarIdentifierstringCalendar system type: GregorianCalendar, HijriCalendar, HebrewCalendar, etc.
FirstDayOfWeekFirstDayOfWeekFirst day of week: Sunday, Monday, Tuesday, etc.
DayFormatstringFormat pattern for day numbers (e.g., "{day.integer(2)}")
MonthFormatstringFormat pattern for month names (e.g., "{month.full}")
DayOfWeekFormatstringFormat pattern for day-of-week headers (e.g., "{dayofweek.abbreviated(3)}")
MonthHeaderFormatstringFormat pattern for month/year header (e.g., "{month.full} {year.full}")
NumberOfWeeksInViewintNumber of week rows displayed in month view (default: 6)

Week Number Properties

PropertyTypeDescription
ShowWeekNumbersboolDisplay week numbers column (default: false)
WeekNumberRuleCalendarWeekRuleWeek calculation rule: FirstDay, FirstFourDayWeek, FirstFullWeek
WeekNumberFormatstringFormat for week numbers (use # as placeholder, e.g., "W #")

Common Use Cases

Event Scheduling Application

Create event scheduling interfaces where users select single dates for appointments, meetings, or reminders with future date restrictions and business day filtering.

Vacation Request System

Build vacation management systems with multiple date selection, blackout dates for company holidays, and range selection for consecutive vacation days.

Appointment Booking Calendar

Implement booking systems with dynamic date availability, blackout dates for unavailable slots, and real-time availability checking through ItemPrepared event.

International Date Picker

Develop multi-language applications with localized calendars supporting different calendar types (Hijri, Hebrew, Persian), RTL languages, and culture-specific formatting.

Date Range Filtering

Create data filtering interfaces where users select date ranges for reports, analytics dashboards, or transaction queries with min/max date boundaries.

Credit Card Expiry Selector

Implement month/year-only selectors for credit card expiration dates by restricting navigation to Year and Decade views only.


Next Steps: Read the reference documentation above based on what you need to implement. Start with getting-started.md for initial setup, then explore specific features as needed.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.