skillZs
LIVE SKILL TAGS
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
REAL INSTALL DATA
← back to all skills
syncfusion/wpf-ui-components-skills93 installs

syncfusion-wpf-scheduler

Implement Syncfusion WPF Scheduler (SfScheduler) for managing appointments and calendar views in desktop applications. Use this when building scheduling interfaces, appointment management systems, or resource booking applications. This skill covers calendar views, appointment handling, resource scheduling, timeline customization, and Outlook-style calendar functionality.

How do I install this agent skill?

npx skills add https://github.com/syncfusion/wpf-ui-components-skills --skill syncfusion-wpf-scheduler
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    The skill provides comprehensive documentation and implementation patterns for the Syncfusion WPF Scheduler control. It is purely instructional, focuses on desktop UI implementation, and utilizes official Syncfusion resources.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

What does this agent skill do?

WPF Scheduler (SfScheduler) Implementation

The WPF Scheduler (SfScheduler) is a comprehensive scheduling control for managing appointments through an intuitive user interface similar to Outlook calendar. It provides eight different view types, appointment management, resource grouping, drag-and-drop, recurrence patterns, timezone support, and extensive customization options.

When to Use This Skill

Use this skill when the user needs to:

  • Implement calendar or scheduler functionality in WPF applications
  • Create appointment management systems
  • Build resource scheduling applications
  • Implement meeting or event management interfaces
  • Add Outlook-like calendar views to applications
  • Schedule and manage recurring appointments
  • Handle multi-resource scheduling scenarios
  • Display appointments across different timezones
  • Implement drag-and-drop appointment rescheduling
  • Create custom appointment editors or views

Component Overview

Key Capabilities:

  • 8 Built-in Views: Day, Week, WorkWeek, Month, TimelineDay, TimelineWeek, TimelineWorkWeek, TimelineMonth
  • Appointment Management: Normal, all-day, spanned, and recurring appointments with full CRUD operations
  • Resource Scheduling: Multi-resource support with grouping by resource or date
  • Drag-and-Drop: Intuitive appointment rescheduling with visual feedback
  • Recurrence Patterns: Daily, weekly, monthly, yearly with exception handling
  • Timezone Support: Multiple timezone handling with automatic DST adjustments
  • Built-in Editor: Appointment creation and editing with validation
  • Customization: Extensive styling, templates, and appearance options
  • Accessibility: WCAG compliance with full keyboard navigation
  • Advanced Features: Load-on-demand, reminders, localization

Documentation and Navigation Guide

Getting Started

📄 Read: references/getting-started.md

  • Assembly deployment and NuGet packages
  • Creating basic scheduler application (Designer, XAML, C#)
  • Basic appointment setup and configuration
  • First day of week and theme support
  • Initial setup and quick start examples

Views and Display

📄 Read: references/scheduler-views.md

  • Available view types (Day, Week, Month, Timeline variants)
  • ViewType property and switching between views
  • View-specific features and rendering
  • Current date display

📄 Read: references/view-customization.md

  • Time interval and slot height customization
  • Working days and hours configuration
  • Special time regions (lunch breaks, holidays)
  • Selection restrictions in timeslots

Appointments and Data

📄 Read: references/appointments.md

  • ScheduleAppointment class and properties
  • Creating and managing appointments
  • ItemSource and AppointmentMapping
  • Custom business objects and data binding
  • All-day and spanned appointments
  • Recurrence appointments and patterns (RRULE)
  • Recurrence exceptions

📄 Read: references/appointment-editing.md

  • Built-in appointment editor
  • Creating, editing, and deleting appointments via UI
  • Editor customization and validation
  • Editor events and custom logic

📄 Read: references/appointment-drag-drop.md

  • Drag-and-drop functionality
  • Rescheduling appointments
  • Drag-drop restrictions and events

Resource Management

📄 Read: references/resource-grouping.md

  • Resource concepts and SchedulerResource class
  • ResourceGroupType (Resource vs Date grouping)
  • Assigning resources to appointments
  • Multi-resource scheduling
  • Resource appearance customization

Calendar and Time Management

📄 Read: references/calendar-types.md

  • Calendar systems (Gregorian, custom)
  • Calendar configuration

📄 Read: references/date-navigation.md

  • DisplayDate property
  • Programmatic navigation methods
  • Date change events

📄 Read: references/timezones.md

  • Scheduler and appointment timezones
  • Automatic timezone conversion
  • Daylight saving time handling
  • Multi-timezone scheduling scenarios

UI Customization

📄 Read: references/ui-features.md

  • Header customization and templates
  • Context menu and commands
  • Busy indicator
  • Selection modes and events

Advanced Features

📄 Read: references/advanced-features.md

  • Accessibility (WCAG, keyboard navigation)
  • Localization and culture-specific formatting
  • Load on demand for large datasets
  • Reminders and notifications
  • Migration from SfSchedule to SfScheduler

Quick Start Example

Basic Scheduler with Appointments

XAML:

<Window xmlns:syncfusion="http://schemas.syncfusion.com/wpf">
    <syncfusion:SfScheduler x:Name="Schedule" 
                            ViewType="Week"
                            FirstDayOfWeek="Sunday" />
</Window>

C# Code-Behind:

using Syncfusion.UI.Xaml.Scheduler;

public MainWindow()
{
    InitializeComponent();
    
    // Create appointment collection
    var appointments = new ScheduleAppointmentCollection();
    
    // Add sample appointment
    appointments.Add(new ScheduleAppointment
    {
        StartTime = DateTime.Now.Date.AddHours(10),
        EndTime = DateTime.Now.Date.AddHours(12),
        Subject = "Client Meeting",
        Location = "Conference Room A",
        Notes = "Discuss project timeline",
        AppointmentBackground = Brushes.LightBlue
    });
    
    Schedule.ItemsSource = appointments;
}

Common Patterns

Pattern 1: Custom Appointments with Data Binding

// Custom business object
public class Meeting : INotifyPropertyChanged
{
    public string EventName { get; set; }
    public DateTime From { get; set; }
    public DateTime To { get; set; }
    public Brush Color { get; set; }
    public bool IsAllDay { get; set; }
}

// ViewModel
public class SchedulerViewModel
{
    public ObservableCollection<Meeting> Events { get; set; }
    
    public SchedulerViewModel()
    {
        Events = new ObservableCollection<Meeting>
        {
            new Meeting
            {
                EventName = "Team Standup",
                From = DateTime.Now.Date.AddHours(9),
                To = DateTime.Now.Date.AddHours(9.5),
                Color = Brushes.Green,
                IsAllDay = false
            }
        };
    }
}

XAML:

<syncfusion:SfScheduler x:Name="Schedule" 
                        ViewType="Week"
                        ItemsSource="{Binding Events}">
    <syncfusion:SfScheduler.AppointmentMapping>
        <syncfusion:AppointmentMapping
            Subject="EventName"
            StartTime="From"
            EndTime="To"
            AppointmentBackground="Color"
            IsAllDay="IsAllDay" />
    </syncfusion:SfScheduler.AppointmentMapping>
</syncfusion:SfScheduler>

Pattern 2: Recurring Weekly Meeting

var recurringMeeting = new ScheduleAppointment
{
    StartTime = new DateTime(2026, 3, 24, 14, 0, 0), // Monday 2PM
    EndTime = new DateTime(2026, 3, 24, 15, 0, 0),
    Subject = "Weekly Status Meeting",
    // Recur every Monday for 12 weeks
    RecurrenceRule = "FREQ=WEEKLY;BYDAY=MO;COUNT=12",
    AppointmentBackground = Brushes.Orange
};

Pattern 3: Resource-Based Scheduling

// Add resources
Schedule.ResourceCollection = new ObservableCollection<SchedulerResource>
{
    new SchedulerResource { Id = "1001", Name = "Dr. Smith", Background = Brushes.Blue },
    new SchedulerResource { Id = "1002", Name = "Dr. Jones", Background = Brushes.Green }
};

Schedule.ResourceGroupType = ResourceGroupType.Resource;

// Assign appointment to resource
var appointment = new ScheduleAppointment
{
    StartTime = DateTime.Now.AddHours(2),
    EndTime = DateTime.Now.AddHours(3),
    Subject = "Patient Consultation",
    ResourceIdCollection = new ObservableCollection<object> { "1001" }
};

Pattern 4: Timezone-Aware Appointments

var globalMeeting = new ScheduleAppointment
{
    StartTime = new DateTime(2026, 3, 25, 10, 0, 0),
    EndTime = new DateTime(2026, 3, 25, 11, 0, 0),
    Subject = "Global Team Sync",
    StartTimeZone = "Pacific Standard Time",
    EndTimeZone = "Pacific Standard Time"
};

// Scheduler displays in local timezone automatically
Schedule.TimeZone = TimeZoneInfo.Local.Id;

Key Properties Overview

Core Properties

PropertyTypeDescriptionDefault
ViewTypeSchedulerViewTypeSets the view (Day, Week, WorkWeek, Month, TimelineDay, TimelineWeek, TimelineWorkWeek, TimelineMonth)Month
ItemsSourceIEnumerableAppointment collection to displaynull
DisplayDateDateTimeCurrently displayed dateDateTime.Now
SelectedDateDateTimeCurrently selected dateDateTime.Now
FirstDayOfWeekDayOfWeekStarting day of the weekSunday
TimeZonestringScheduler's timezone identifierLocal

View Navigation & Configuration

PropertyTypeDescriptionDefault
AllowedViewTypesSchedulerViewTypeAllowed view types for navigationAll
AllowViewNavigationboolEnable/disable view navigationtrue
ShowDatePickerButtonboolShow date picker button in headertrue

Date Range Properties

PropertyTypeDescriptionDefault
MinimumDateDateTimeMinimum date that can be displayedDateTime.MinValue
MaximumDateDateTimeMaximum date that can be displayedDateTime.MaxValue
BlackoutDatesObservableCollection<DateTime>Dates where interaction is disabled (TimelineMonth only)null

Data Binding & Mapping

PropertyTypeDescriptionDefault
AppointmentMappingAppointmentMappingMaps custom objects to ScheduleAppointment propertiesnull
ResourceMappingResourceMappingMaps custom objects to SchedulerResource propertiesnull

Header Customization

PropertyTypeDescriptionDefault
HeaderHeightdoubleHeight of the scheduler header50
HeaderDateFormatstringDate format string in header"MMMM yyyy"
HeaderTemplateDataTemplateCustom template for headernull

Resource Scheduling

PropertyTypeDescriptionDefault
ResourceCollectionObservableCollection<SchedulerResource>Collection of scheduler resourcesnull
ResourceGroupTypeResourceGroupTypeGrouping mode (Resource, Date, None)None
ResourceHeaderTemplateDataTemplateCustom template for resource headersnull
ResourceHeaderTemplateSelectorDataTemplateSelectorTemplate selector for resource headersnull

View-Specific Settings

PropertyTypeDescriptionDefault
DaysViewSettingsDaysViewSettingsSettings for Day/Week/WorkWeek viewsDefault
MonthViewSettingsMonthViewSettingsSettings for Month viewDefault
TimelineViewSettingsTimelineViewSettingsSettings for Timeline viewsDefault

Calendar & Culture

PropertyTypeDescriptionDefault
CalendarIdentifierstringCalendar system identifier (Gregorian, etc.)Gregorian

UI & Interaction

PropertyTypeDescriptionDefault
ShowBusyIndicatorboolShows loading indicator during operationsfalse
EnableToolTipboolEnable tooltips on appointmentstrue
ToolTipTemplateDataTemplateCustom template for tooltipsnull
EnableReminderboolEnable reminder functionalityfalse

Context Menus

PropertyTypeDescriptionDefault
AppointmentContextMenuContextMenuContext menu for appointmentsDefault
CellContextMenuContextMenuContext menu for cellsDefault

Drag & Drop

PropertyTypeDescriptionDefault
DragDropSettingsDragDropSettingsConfigure drag-drop behaviorDefault

Appointment Editing

PropertyTypeDescriptionDefault
AppointmentEditFlagAppointmentEditFlagControls which edit operations are allowedAll
AppointmentResizeControllerIAppointmentResizeControllerCustom resize behavior controllernull

Load On Demand

PropertyTypeDescriptionDefault
LoadOnDemandCommandICommandCommand executed when loading appointments on demandnull

Key Methods

MethodDescription
Forward()Navigate forward by one view interval
Backward()Navigate backward by one view interval
SchedulerDateToPoint(DateTime)Convert date to screen coordinates
PointToSchedulerDate(Point)Convert screen coordinates to date/time

Key Events

EventDescription
ViewChangedRaised when the view type changes
DisplayDateChangedRaised when the display date changes
SelectionChangedRaised when the selected date/appointment changes
CellTappedRaised when a cell is tapped/clicked
CellDoubleTappedRaised when a cell is double-clicked
CellLongPressedRaised when a cell is long-pressed
AppointmentTappedRaised when an appointment is tapped/clicked
AppointmentDoubleTappedRaised when an appointment is double-clicked
AppointmentDragStartingRaised when appointment drag begins (can be cancelled)
AppointmentDragOverRaised while dragging appointment over scheduler
AppointmentDropRaised when appointment is dropped
AppointmentResizeStartingRaised when appointment resize begins (can be cancelled)
AppointmentResizingRaised while appointment is being resized
AppointmentResizeCompletedRaised when appointment resize completes
AppointmentEditorOpeningRaised when appointment editor is opening (can be cancelled)
AppointmentEditorClosingRaised when appointment editor is closing (can be cancelled)
HeaderTappedRaised when header is tapped/clicked

Common Use Cases

  1. Meeting Room Scheduler - Manage conference room bookings with resource grouping
  2. Medical Appointments - Doctor scheduling with patient appointments and recurring slots
  3. Project Timeline - Track tasks, milestones, and team member assignments
  4. Event Calendar - Public event management with all-day and multi-day events
  5. Employee Shift Planning - Resource-based shift scheduling with drag-drop
  6. Class Schedule - Educational timetables with recurring sessions
  7. Service Booking - Appointment booking system with availability management

Important Considerations

  • Performance: Use LoadOnDemand for large datasets spanning multiple years
  • Data Binding: Custom objects must implement INotifyPropertyChanged for updates
  • Recurrence: Use RRULE format for recurrence patterns (standard RFC 5545)
  • Timezones: Always specify timezones for global applications
  • Resources: ResourceIdCollection must match ResourceCollection IDs
  • Views: Choose appropriate view based on use case (Day for detailed, Month for overview)

Next Steps

Start with Getting Started for installation and basic setup, then explore specific features based on your requirements using the navigation guide above.

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/syncfusion/wpf-ui-components-skills/syncfusion-wpf-scheduler">View syncfusion-wpf-scheduler on skillZs</a>