mcpField
S
syncfusion-winui-date-picker

syncfusion-winui-date-picker

github.com/syncfusionDevelopment147 installsUpdated 1w ago
Repository

About syncfusion-winui-date-picker

An implementation guide for Syncfusion’s SfDatePicker in WinUI 3, covering date selection, restrictions, calendar localization, and dropdown spinner customization.

Key features

  1. 01Date range limits and blackout dates
  2. 02Multiple calendars and localization
  3. 03Display and edit format settings
  4. 04Dropdown and spinner customization
  5. 05Date-change and validation events

Use cases

  1. 01Schedule appointments with date restrictions
  2. 02Mark unavailable dates in a booking system
  3. 03Build a localized date-entry interface

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/syncfusion/winui-ui-components-skills --skill syncfusion-winui-date-picker

After installing, type/syncfusion-winui-date-pickerin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
date-restriction.md
dropdown-customization.md
dropdown-header-customization.md
getting-started.md
localization-formatting.md
spinner-customization.md

Details

From the project README

WinUI DatePicker (SfDatePicker)

A comprehensive guide for implementing the Syncfusion WinUI DatePicker control - an intuitive, touch-friendly date selection control with dropdown spinner, multiple date formats, date restrictions, and extensive customization options.

When to Use This Skill

Use this skill when you need to:

  • Add date input controls to WinUI desktop applications
  • Implement date pickers with dropdown calendar spinners
  • Restrict date selection to specific ranges or block certain dates
  • Support multiple calendar systems (Hebrew, Hijri, Persian, etc.)
  • Customize date display and edit formats
  • Implement localized date pickers with RTL support
  • Create touch-friendly date selection interfaces
  • Validate date input with custom rules
  • Customize dropdown appearance and behavior
  • Handle date selection events and validation

Component Overview

The SfDatePicker control provides a modern date input experience for WinUI 3 desktop applications. It combines an editable text field with a dropdown date spinner, supporting various date formats, calendar types, and validation rules.

Key Characteristics:

  • Touch-friendly dropdown date spinner interface
  • Multiple date format support (display and edit formats)
  • Date range restrictions (MinDate, MaxDate)
  • Blackout dates for blocking specific dates
  • Multiple calendar types (Gregorian, Hebrew, Hijri, Persian, etc.)
  • Localization and RTL support
  • Mask and free-form editing modes
  • Customizable dropdown UI and spinner cells
  • Built-in validation and watermark text
  • XAML and C# configuration support

Package: Syncfusion.Editors.WinUI
Namespace: Syncfusion.UI.Xaml.Editors
Control: SfDatePicker

Documentation and Navigation Guide

Getting Started

📄 Read: references/getting-started.md

Start here for initial setup and basic usage:

  • Installing Syncfusion.Editors.WinUI package
  • Adding SfDatePicker to XAML and C# code
  • Setting and getting selected date (SelectedDate property)
  • Interactive date selection from dropdown
  • Enabling null values (AllowNull property)
  • Adding placeholder text (watermark)
  • Configuring header and description
  • Customizing header template
  • Handling date changed events (SelectedDateChanged)
Date Restriction

📄 Read: references/date-restriction.md

Learn how to restrict and validate date selection:

  • Setting minimum and maximum date ranges (MinDate, MaxDate)
  • Blocking specific dates with BlackoutDates collection
  • Dynamically disabling dates (DateFieldItemPrepared event)
  • Blocking weekend dates programmatically
  • Hiding submit buttons for immediate selection
  • Canceling date changes (SelectedDateChanging event)
  • Date validation patterns and error handling
Localization and Formatting

📄 Read: references/localization-formatting.md

Configure calendar types, formats, and localization:

  • Changing calendar type (CalendarIdentifier: Hebrew, Hijri, Persian, etc.)
  • Setting flow direction for RTL languages
  • Localizing with Language property
  • Customizing display format (DisplayDateFormat)
  • Formatting day, month, year fields (DayFormat, MonthFormat, YearFormat)
  • Mask editing mode with auto-correction
  • Free-form editing mode (EditMode)
  • Showing/hiding clear button (ShowClearButton)
Dropdown Customization

📄 Read: references/dropdown-customization.md

Customize the dropdown button and container:

  • Customizing dropdown button UI (DropDownButtonTemplate)
  • Hiding dropdown button (ShowDropDownButton)
  • Changing dropdown alignment (DropDownPlacement)
  • Opening dropdown programmatically (IsOpen property)
  • Setting dropdown height (DropDownHeight)
  • Controlling visible items count (VisibleItemsCount)
Dropdown Header Customization

📄 Read: references/dropdown-header-customization.md

Configure the dropdown header area:

  • Adding hints in dropdown header (DropDownHeader)
  • Showing/hiding dropdown header (ShowDropDownHeader)
  • Customizing header UI (DropDownHeaderTemplate)
  • Hiding column headers (ShowColumnHeaders)
  • Header layout patterns
Spinner Customization

📄 Read: references/spinner-customization.md

Customize the date spinner cells and columns:

  • Setting cell dimensions (ItemWidth, ItemHeight)
  • Restricting cell width (MinItemWidth, MaxItemWidth)
  • Styling spinner cells (ItemContainerStyle)
  • Custom cell templates (ItemTemplate)
  • Conditional cell appearance (ItemTemplateSelector)
  • Customizing columns (DateFieldPrepared event)
  • Formatting individual date fields
  • Enabling date looping in spinner

Quick Start Example

Basic DatePicker Setup

XAML:

<Window
    x:Class="DatePickerDemo.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:editors="using:Syncfusion.UI.Xaml.Editors">
    
    <Grid>
        <editors:SfDatePicker 
            x:Name="datePicker"
            Header="Select Date"
            PlaceholderText="Choose a date"
            SelectedDate="2026-03-22"
            Width="250" 
            Height="75" />
    </Grid>
</Window>

C#:

using Syncfusion.UI.Xaml.Editors;

namespace DatePickerDemo
{
    public sealed partial class MainWindow : Window
    {
        public MainWindow()
        {
            this.InitializeComponent();
            
            // Creating an instance of the Date Picker control
            SfDatePicker sfDatePicker = new SfDatePicker();
            this.Content = sfDatePicker;
        }
    }
}

Common Patterns

Pattern 1: Date Range Restriction
<editors:SfDatePicker 
    x:Name="datePicker"
    MinDate="2026-01-01"
    MaxDate="2026-12-31"
    Header="Select date within 2026" />
Pattern 2: Blocking Specific Dates
// In ViewModel or code-behind
public DateTimeOffsetCollection BlockedDates { get; set; }

public void InitializeBlockedDates()
{
    BlockedDates = new DateTimeOffsetCollection();
    BlockedDates.Add(new DateTimeOffset(new DateTime(2026, 12, 25))); // Christmas
    BlockedDates.Add(new DateTimeOffset(new DateTime(2026, 1, 1)));   // New Year
}
<editors:SfDatePicker 
    BlackoutDates="{Binding BlockedDates}" />
Pattern 3: Custom Date Format
<editors:SfDatePicker 
    DisplayDateFormat="MMMM dd, yyyy"
    DayFormat="{}{day.integer}"
    MonthFormat="{}{month.full}"
    YearFormat="{}{year.full}" />
Pattern 4: Localized DatePicker with Calendar Type
<editors:SfDatePicker 
    CalendarIdentifier="HebrewCalendar"
    Language="he-IL"
    FlowDirection="RightToLeft" />
Pattern 5: Null Value Support
<editors:SfDatePicker 
    AllowNull="True"
    SelectedDate="{x:Null}"
    PlaceholderText="Select a date" />
Pattern 6: Immediate Selection (No Submit Button)
<editors:SfDatePicker 
    ShowSubmitButtons="False" />

Key Properties Reference

Date Selection
PropertyTypeDescription
SelectedDateDateTimeOffset?Gets or sets the selected date
AllowNullboolAllows null value selection
Date Restriction
PropertyTypeDescription
MinDateDateTimeOffsetMinimum selectable date (default: 1/1/1921)
MaxDateDateTimeOffsetMaximum selectable date (default: 12/31/2121)
BlackoutDatesDateTimeOffsetCollectionCollection of blocked dates
Formatting
PropertyTypeDescription
DisplayDateFormatstringDisplay format in editor (default: "d")
DayFormatstringDay field format in spinner
MonthFormatstringMonth field format in spinner
YearFormatstringYear field format in spinner
Localization
PropertyTypeDescription
CalendarIdentifierstringCalendar type (Gregorian, Hebrew, Hijri, etc.)
LanguagestringLanguage/culture for localization
Dropdown Configuration
PropertyTypeDescription
DropDownHeaderobjectHeader content in dropdown
ShowDropDownHeaderboolShows/hides dropdown header
ShowColumnHeadersboolShows/hides spinner column headers
ShowDropDownButtonboolShows/hides dropdown button
IsOpenboolOpens/closes dropdown programmatically
DropDownHeightdoubleHeight of dropdown spinner
VisibleItemsCountintNumber of visible items in spinner
Spinner Item Sizing
PropertyTypeDescription
ItemWidthdoubleWidth of spinner cells (default: 80)
ItemHeightdoubleHeight of spinner cells (default: 40)
MinItemWidthdoubleMinimum cell width
MaxItemWidthdoubleMaximum cell width
UI Customization
PropertyTypeDescription
PlaceholderTextstringWatermark text when no date selected
HeaderobjectHeader content above control
DescriptionobjectDescription text below control
ItemTemplateDataTemplateTemplate for spinner cells
ItemTemplateSelectorDataTemplateSelectorConditional cell templates
ItemContainerStyleStyleStyle for spinner cells
ShowClearButtonboolShows/hides clear button in editor
ShowSubmitButtonsboolShows/hides OK/Cancel buttons
Editing
PropertyTypeDescription
EditModeDateTimeEditModeMask or Normal editing mode
Events
EventDescription
SelectedDateChangedFires when selected date changes
SelectedDateChangingFires before date changes (cancelable)
DateFieldItemPreparedFires for each spinner item (for customization)
DateFieldPreparedFires for each spinner column (for customization)

Common Use Cases

Use Case 1: Appointment Scheduler

Date picker for selecting appointment dates with working hours only:

// Block weekends and restrict to business days
datePicker.DateFieldItemPrepared += (s, e) =>
{
    if (e.ItemInfo.DateTime.Value.DayOfWeek == DayOfWeek.Saturday ||
        e.ItemInfo.DateTime.Value.DayOfWeek == DayOfWeek.Sunday)
    {
        e.ItemInfo.IsEnabled = false;
    }
};
Use Case 2: Booking System

Date picker with blackout dates for unavailable dates:

// Mark booked dates as unavailable
var bookedDates = GetBookedDatesFromDatabase();
datePicker.BlackoutDates = new DateTimeOffsetCollection();
foreach (var date in bookedDates)
{
    datePicker.BlackoutDates.Add(new DateTimeOffset(date));
}
Use Case 3: Birth Date Entry

Date picker for entering historical dates:

<editors:SfDatePicker 
    Header="Date of Birth"
    MaxDate="{x:Bind CurrentDate}"
    MinDate="1920-01-01"
    DisplayDateFormat="MMMM dd, yyyy" />
Use Case 4: Multi-Language Application

Localized date picker with automatic RTL detection:

// Set based on user's locale
datePicker.Language = currentUser.PreferredLanguage;
datePicker.CalendarIdentifier = currentUser.CalendarType;
Use Case 5: Custom Branded UI

Date picker with custom colors and icons:

<editors:SfDatePicker>
    <editors:SfDatePicker.DropDownButtonTemplate>
        <DataTemplate>
            <FontIcon Glyph="&#xE787;" Foreground="Blue" />
        </DataTemplate>
    </editors:SfDatePicker.DropDownButtonTemplate>
</editors:SfDatePicker>

Additional Resources


Next Steps: Choose a documentation section above based on your implementation needs, or start with the Getting Started guide for basic setup.

Comments

Markdown supported