Install
$ agentstack add skill-devexpress-agent-skills-devexpress-wpf-scheduler ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
DevExpress WPF Scheduler Control
DevExpress.Xpf.Scheduling.SchedulerControl is a full-featured calendar / scheduling control: appointments, recurring activities, resources (people, rooms, equipment), labels, statuses, time regions, reminders, time zones. Seven view types out of the box (Day / Work Week / Week / Month / Timeline / Agenda / List). Bind to a data source through DataSource.AppointmentsSource + AppointmentMappings, or use the unbound mode for runtime-managed data.
When to Use This Skill
Use this skill when you need to:
- Add a calendar / scheduling view to a WPF app
- Display recurring appointments, all-day events, multi-day events
- Group appointments by resource (people, rooms, equipment) or by date
- Bind to a data source via mappings —
AppointmentMappings,ResourceMappings, custom fields - Switch among the seven view types
- Customize appointment look via templates, styles, brushes
- Manage labels, statuses, time regions, reminders
- Implement an Outlook-clone in WPF
Prerequisites & Installation
NuGet Packages
| Package | Purpose | |---------|---------| | DevExpress.Wpf.Scheduling | Main package — SchedulerControl, all view types, all item types | | DevExpress.Wpf.Ribbon | Required if you use Quick Actions → "Create Ribbon" to add ribbon UI | | DevExpress.Wpf.Printing | Required for the Scheduler's print preview / export |
DevExpress.Wpf.Scheduling transitively brings DevExpress.Wpf.Core (themes, MVVM helpers).
.NET (6/7/8+)
dotnet add package DevExpress.Wpf.Scheduling
Add to .csproj:
net8.0-windows
true
All DevExpress packages in a project must share the same version. A valid DevExpress license is required.
Before You Start — Ask the Developer
- Target framework: .NET 8+, .NET 6/7, or .NET Framework 4.x?
- Bound or unbound: Does the scheduler persist data to an external source (DB, file, EF), or run with in-memory data created at runtime?
- Data model: What classes represent appointments and resources? Map their fields to the Scheduler's properties via
AppointmentMappings/ResourceMappings. See [data-binding.md](references/data-binding.md). - Grouping:
None(a single timeline),Resource(one lane per resource),Date(lanes by date)? - Active view: Day, Work Week, Week, Month, Timeline, Agenda, or List? Each has its own configuration. See [views.md](references/views.md).
- Recurrence: Are recurring appointments required? Yes → add
RecurrenceInfoandTypemappings. - Appearance: Need custom appointment look (templates, styles), color themes (brushes), or both?
Component Overview
XAML Namespace
xmlns:dxsch="http://schemas.devexpress.com/winfx/2008/xaml/scheduling"
xmlns:dxschv="http://schemas.devexpress.com/winfx/2008/xaml/scheduling/visual"
dxsch: covers the main SchedulerControl, views, mappings, item types. dxschv: is for visual elements (AppointmentContentPanel, AppointmentIntervalSubjectPresenter, etc.) used inside custom templates.
Element Hierarchy
SchedulerControl
├── DataSource
│ ├── AppointmentsSource — bound collection of appointments
│ ├── ResourcesSource — bound collection of resources
│ ├── AppointmentLabelsSource — bound collection of labels
│ ├── AppointmentStatusesSource — bound collection of statuses
│ ├── TimeRegionsSource — bound collection of time regions
│ ├── AppointmentMappings — field-to-property bindings (Start, End, Subject, etc.)
│ ├── ResourceMappings — field-to-property bindings (Id, Caption, Brush)
│ ├── AppointmentLabelMappings
│ ├── AppointmentStatusMappings
│ └── TimeRegionMappings
├── Views — collection of view types (Day, Week, Month, etc.)
├── AppointmentItems — imperative collection (unbound mode)
├── ResourceItems — imperative collection (unbound mode)
├── LabelItems / StatusItems / TimeRegionItems
├── BrushSet — color palette for resources/labels/statuses
└── BrushProvider — theme-aware brush customization
Two Operation Modes
| Mode | When | How | |---|---|---| | Bound | Production app, data persisted to DB / file / EF / API | Set DataSource.AppointmentsSource (and others) + AppointmentMappings | | Unbound | Quick prototype, data managed in-memory at runtime | Use SchedulerControl.AppointmentItems (and other *Items collections) directly |
Mixed mode is supported: appointments via DataSource, but labels/statuses created inline via LabelItems / StatusItems.
Documentation & Navigation Guide
Getting Started
Refer to [references/getting-started.md](references/getting-started.md)
When you need to:
- Set up a .NET project with
DevExpress.Wpf.Scheduling - Build the minimum viable scheduler — view, data model, bindings
- Add a Ribbon UI for the scheduler (Quick Actions → "Create Ribbon")
Data Binding
Refer to [references/data-binding.md](references/data-binding.md)
When you need to:
- Bind appointments, resources, labels, statuses, time regions
- Define mappings —
AppointmentMappings,ResourceMappings, etc. - Use
CustomFieldMappingfor project-specific extra fields - Implement load-on-demand for large data sets
- Use Mapping Converters for custom storage formats (e.g.,
string↔RecurrenceInfo)
Data Items (Appointments, Resources, Labels, Statuses, Time Regions, Reminders)
Refer to [references/data-items.md](references/data-items.md)
When you need to:
- Understand what each item type represents
- Configure recurring appointments (
AppointmentType.Pattern+RecurrenceInfo) - Define labels (categories) and statuses (availability) for appointments
- Block off time ranges with time regions
- Set reminders on appointments
View Modes
Refer to [references/views.md](references/views.md)
When you need to:
- Pick between Day / Work Week / Week / Month / Timeline / Agenda / List views
- Configure view-specific properties (visible time, day count, work time only)
- Group by resource or date (
GroupType) - Switch views at runtime (
ActiveViewIndex) - Use multiple views of the same type with different settings
Appearance Customization (Styles and Templates)
Refer to [references/styles-and-templates.md](references/styles-and-templates.md)
When you need to:
- Override the appointment content template (
AppointmentContentTemplate) - Use the built-in appointment presenters (
AppointmentIntervalSubjectPresenter,AppointmentLocationPresenter,AppointmentDescriptionPresenter,AppointmentImagesPanel) - Apply per-view styles (
AppointmentStyle) - Customize colors via
BrushSet/BrushName - Use
BrushProviderfor theme-aware customization (resource cells, headers, navigation buttons) - Choose between New (Outlook2019) and Classic UI styles
Quick Start Example
See the runnable quickstart sample in [examples/quickstart.cs](examples/quickstart.cs). If the sample includes companion XAML or resources, keep them alongside the C# entry point in the same examples/ folder.
The following XAML shows the core SchedulerControl setup used by that quickstart:
Key Properties & API Surface
SchedulerControl
| Property | Use | |---|---| | DataSource | DataSource object holding all bindings and mappings | | Views | Collection of view objects (Day, Week, etc.) | | ActiveViewIndex | Index into Views — picks the displayed view | | GroupType | None, Resource, Date | | FirstDayOfWeek | Sunday, Monday, etc. — affects Week / Work Week views | | WorkDays / WorkTime / CustomWorkTime | Work-hours / work-days configuration | | AppointmentItems / ResourceItems / LabelItems / StatusItems / TimeRegionItems | Imperative collections (unbound mode) | | SelectedAppointments | Currently selected appointments | | BrushSet / BrushProvider | Color customization | | AppointmentAdding/AppointmentAdded, AppointmentRemoving/AppointmentRemoved, AppointmentEditing/AppointmentEdited, AppointmentRestoring/AppointmentRestored | Lifecycle events for tracking appointment changes. The cancelable *ing pre-events validate/veto an operation (e.Cancel); the *ed post-events carry AppointmentCRUDEventArgs (AddToSource / UpdateInSource / DeleteFromSource) for persisting to the data store |
DataSource (Bound Mode)
Bindings and mappings live inside this object. Use either `` element syntax or assign in code.
View Classes
DayView, WorkWeekView, WeekView, MonthView, TimelineView, AgendaView, ListView — each is a ViewBase descendant with its own configuration properties. See [views.md](references/views.md).
Common Patterns
Pattern 1: Minimal Unbound Scheduler
That's it. The scheduler shows today, lets users create appointments by selecting time cells and typing. Appointments live in memory — they're lost on app close.
Pattern 2: Bound to ViewModel Collections
Start and End are the only required mappings for non-recurring appointments. Recurring ones additionally need Type and RecurrenceInfo.
Pattern 3: Pre-Configure Views in XAML
Adding any view to the Views collection in XAML overrides the default "all views enabled" behavior — only the listed views are active.
Pattern 4: Custom Appointment Template
Troubleshooting
| Symptom | Cause | Solution | |---|---|---| | dxsch: prefix unresolved | Missing namespace or NuGet package | Add xmlns:dxsch="http://schemas.devexpress.com/winfx/2008/xaml/scheduling"; install DevExpress.Wpf.Scheduling. | | Appointments don't appear | AppointmentsSource binding wrong, or required Start/End mappings not set | Verify the binding source and that the mapping property names match data class members exactly (case-sensitive). | | Recurring appointments expand wrong / not at all | Missing Type and RecurrenceInfo mappings | Both are required for recurrence. RecurrenceInfo is typically stored as a string (XML form); use a Mapping.Converter if your storage format differs. | | Changes to appointments don't persist | Unbound mode; or no two-way persistence layer | Switch to bound mode with an external store, or subscribe to the AppointmentAdded / AppointmentRemoved / AppointmentEdited events to detect changes for manual save. | | error CS0104: 'Application' is an ambiguous reference | DevExpress.Wpf.Scheduling transitively references System.Windows.Forms; enable on .NET 6+ creates the clash | Qualify System.Windows.Application in App.xaml.cs. | | Wrong view shows | ActiveViewIndex doesn't match the position in Views | Indexes are 0-based; verify the order of `, , etc. in XAML. | | Multiple resource bars don't appear | GroupType="None" | Set GroupType="Resource" to render one lane per resource. | | Resource colors don't apply | Brush / BrushName not set on the resource items, or theme overrides | Set ResourceMappings.Brush / BrushName, or use BrushSet` to define a palette. See styles-and-templates.md. | | List view has no filter when paired with DateNavigator | By design — DateNavigator can't filter List view | Use the List view's built-in filtering UI instead. |
Constraints & Rules
CRITICAL — follow these rules in every interaction:
- Build verification: After changes, run
dotnet buildand report errors before claiming success. - Target framework: Windows-only (
net{X}-windows,UseWPF=true). - NuGet: Use
DevExpress.Wpf.Scheduling. All DevExpress packages share one version. - XAML namespace:
dxsch:(scheduling),dxschv:(visual presenters used inside templates). - Required mappings:
StartandEndare always required inAppointmentMappings. For recurring appointments, alsoTypeandRecurrenceInfo. - Mapping names are case-sensitive and must match the data class's property names exactly.
- Don't mix
*Itemsand*Sourcefor the same item type. Pick one mode per item type — bound (*Source+ mappings) or unbound (*Itemsdirectly). - Application ambiguity: When generating
App.xaml.cson .NET 6+, qualifySystem.Windows.Application.
Using DevExpress Documentation MCP
- Search:
devexpress_docs_search(technology="WPF Scheduler", query="") - Fetch:
devexpress_docs_get_content(url="")
Use MCP for: Outlook 365 integration, drag-and-drop customization, custom edit dialogs, time-zone handling, printing-template authoring, Save / Load layout — these are deep specialized topics beyond the core references.
Next Steps
Start with [Getting Started](references/getting-started.md) for .NET 6/7/8+ project setup, or [Getting Started (.NET Framework)](references/getting-started-dotnet-fw.md) for .NET Framework 4.6.2+ projects. Then use [Data Binding](references/data-binding.md) for the mappings, [Data Items](references/data-items.md) to understand the model, [Views](references/views.md) to pick a view, and [Styles and Templates](references/styles-and-templates.md) for appearance.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: DevExpress
- Source: DevExpress/agent-skills
- License: MIT
- Homepage: https://www.devexpress.com
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.