syncfusion-wpf-scheduler — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited syncfusion-wpf-scheduler (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
Use this skill when the user needs to:
Key Capabilities:
📄 Read: references/getting-started.md
📄 Read: references/scheduler-views.md
📄 Read: references/view-customization.md
📄 Read: references/appointments.md
📄 Read: references/appointment-editing.md
📄 Read: references/appointment-drag-drop.md
📄 Read: references/resource-grouping.md
📄 Read: references/calendar-types.md
📄 Read: references/date-navigation.md
📄 Read: references/timezones.md
📄 Read: references/ui-features.md
📄 Read: references/advanced-features.md
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;
}// 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>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
};// 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" }
};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;| Property | Type | Description | Default |
|---|---|---|---|
| ViewType | SchedulerViewType | Sets the view (Day, Week, WorkWeek, Month, TimelineDay, TimelineWeek, TimelineWorkWeek, TimelineMonth) | Month |
| ItemsSource | IEnumerable | Appointment collection to display | null |
| DisplayDate | DateTime | Currently displayed date | DateTime.Now |
| SelectedDate | DateTime | Currently selected date | DateTime.Now |
| FirstDayOfWeek | DayOfWeek | Starting day of the week | Sunday |
| TimeZone | string | Scheduler's timezone identifier | Local |
| Property | Type | Description | Default |
|---|---|---|---|
| AllowedViewTypes | SchedulerViewType | Allowed view types for navigation | All |
| AllowViewNavigation | bool | Enable/disable view navigation | true |
| ShowDatePickerButton | bool | Show date picker button in header | true |
| Property | Type | Description | Default |
|---|---|---|---|
| MinimumDate | DateTime | Minimum date that can be displayed | DateTime.MinValue |
| MaximumDate | DateTime | Maximum date that can be displayed | DateTime.MaxValue |
| BlackoutDates | ObservableCollection\<DateTime\> | Dates where interaction is disabled (TimelineMonth only) | null |
| Property | Type | Description | Default |
|---|---|---|---|
| AppointmentMapping | AppointmentMapping | Maps custom objects to ScheduleAppointment properties | null |
| ResourceMapping | ResourceMapping | Maps custom objects to SchedulerResource properties | null |
| Property | Type | Description | Default |
|---|---|---|---|
| HeaderHeight | double | Height of the scheduler header | 50 |
| HeaderDateFormat | string | Date format string in header | "MMMM yyyy" |
| HeaderTemplate | DataTemplate | Custom template for header | null |
| Property | Type | Description | Default |
|---|---|---|---|
| ResourceCollection | ObservableCollection\<SchedulerResource\> | Collection of scheduler resources | null |
| ResourceGroupType | ResourceGroupType | Grouping mode (Resource, Date, None) | None |
| ResourceHeaderTemplate | DataTemplate | Custom template for resource headers | null |
| ResourceHeaderTemplateSelector | DataTemplateSelector | Template selector for resource headers | null |
| Property | Type | Description | Default |
|---|---|---|---|
| DaysViewSettings | DaysViewSettings | Settings for Day/Week/WorkWeek views | Default |
| MonthViewSettings | MonthViewSettings | Settings for Month view | Default |
| TimelineViewSettings | TimelineViewSettings | Settings for Timeline views | Default |
| Property | Type | Description | Default |
|---|---|---|---|
| CalendarIdentifier | string | Calendar system identifier (Gregorian, etc.) | Gregorian |
| Property | Type | Description | Default |
|---|---|---|---|
| ShowBusyIndicator | bool | Shows loading indicator during operations | false |
| EnableToolTip | bool | Enable tooltips on appointments | true |
| ToolTipTemplate | DataTemplate | Custom template for tooltips | null |
| EnableReminder | bool | Enable reminder functionality | false |
| Property | Type | Description | Default |
|---|---|---|---|
| AppointmentContextMenu | ContextMenu | Context menu for appointments | Default |
| CellContextMenu | ContextMenu | Context menu for cells | Default |
| Property | Type | Description | Default |
|---|---|---|---|
| DragDropSettings | DragDropSettings | Configure drag-drop behavior | Default |
| Property | Type | Description | Default |
|---|---|---|---|
| AppointmentEditFlag | AppointmentEditFlag | Controls which edit operations are allowed | All |
| AppointmentResizeController | IAppointmentResizeController | Custom resize behavior controller | null |
| Property | Type | Description | Default |
|---|---|---|---|
| LoadOnDemandCommand | ICommand | Command executed when loading appointments on demand | null |
| Method | Description |
|---|---|
| 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 |
| Event | Description |
|---|---|
| ViewChanged | Raised when the view type changes |
| DisplayDateChanged | Raised when the display date changes |
| SelectionChanged | Raised when the selected date/appointment changes |
| CellTapped | Raised when a cell is tapped/clicked |
| CellDoubleTapped | Raised when a cell is double-clicked |
| CellLongPressed | Raised when a cell is long-pressed |
| AppointmentTapped | Raised when an appointment is tapped/clicked |
| AppointmentDoubleTapped | Raised when an appointment is double-clicked |
| AppointmentDragStarting | Raised when appointment drag begins (can be cancelled) |
| AppointmentDragOver | Raised while dragging appointment over scheduler |
| AppointmentDrop | Raised when appointment is dropped |
| AppointmentResizeStarting | Raised when appointment resize begins (can be cancelled) |
| AppointmentResizing | Raised while appointment is being resized |
| AppointmentResizeCompleted | Raised when appointment resize completes |
| AppointmentEditorOpening | Raised when appointment editor is opening (can be cancelled) |
| AppointmentEditorClosing | Raised when appointment editor is closing (can be cancelled) |
| HeaderTapped | Raised when header is tapped/clicked |
Start with Getting Started for installation and basic setup, then explore specific features based on your requirements using the navigation guide above.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.