syncfusion-wpf-gantt — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited syncfusion-wpf-gantt (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.
Comprehensive guide for implementing the Syncfusion® Essential Gantt control for WPF applications. The Gantt control is an MS Project-like project management viewer with built-in grid, schedule, and resource assignment capabilities designed to help project managers develop plans, assign resources, track task progress, and manage project timelines.
Use this skill when you need to:
This skill covers the complete Gantt control implementation from basic setup to advanced customization.
The Essential Gantt control is composed of three main components:
Task Management:
Visual Features:
Interactions:
Data Operations:
📄 Read: references/getting-started.md
When you need to:
Topics covered: Installation, control structure, class diagram, basic configuration, schedule types, auto-expand modes, theming
📄 Read: references/data-binding.md
When you need to:
Topics covered: TaskDetails binding, ObservableCollection, task properties, hierarchy creation, resource assignment, MVVM patterns
📄 Read: references/task-scheduling.md
When you need to:
Topics covered: Schedule types, calendar customization, holidays, zooming, timeline management, schedule configuration
📄 Read: references/task-relationships.md
When you need to:
Topics covered: Dependencies, connectors, auto-update hierarchy, baselines, milestones, relationship types, progress tracking
📄 Read: references/customization.md
When you need to:
Topics covered: Custom node styles, tooltips, highlighting, strip lines, DateTime indicators, themes, templates, conditional styling
📄 Read: references/drag-drop-interaction.md
When you need to:
Topics covered: Drag to resize, drag-and-drop reordering, event handling, synchronization, drag constraints
📄 Read: references/data-operations.md
When you need to:
Topics covered: Filtering, sorting, virtualization, XML import/export, bulk operations, search, performance optimization
📄 Read: references/resource-management.md
When you need to:
Topics covered: Resource views, inline items, resource assignment, collections, allocation tracking, multi-resource tasks
📄 Read: references/localization.md
When you need to:
Topics covered: Flow direction, localization, culture formatting, multi-language resources, date/time formatting, resource strings
Here's a minimal example to get started with the Gantt control:
XAML:
<Window x:Class="GanttDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
Title="Project Management" Height="600" Width="1000">
<syncfusion:GanttControl x:Name="ganttControl"
ItemsSource="{Binding TaskDetails}"
GridWidth="300"
ChartWidth="700">
<syncfusion:GanttControl.DataContext>
<local:ViewModel/>
</syncfusion:GanttControl.DataContext>
</syncfusion:GanttControl>
</Window>ViewModel (C#):
using System;
using System.Collections.ObjectModel;
using Syncfusion.Windows.Controls.Gantt;
public class ViewModel
{
public ObservableCollection<TaskDetails> TaskDetails { get; set; }
public ViewModel()
{
TaskDetails = new ObservableCollection<TaskDetails>();
// Create parent task
var parentTask = new TaskDetails
{
TaskId = 1,
TaskName = "Project Planning",
StartDate = new DateTime(2024, 1, 1),
FinishDate = new DateTime(2024, 1, 15),
Progress = 40d
};
// Add child tasks
parentTask.Child.Add(new TaskDetails
{
TaskId = 2,
TaskName = "Define project scope",
StartDate = new DateTime(2024, 1, 1),
FinishDate = new DateTime(2024, 1, 5),
Progress = 100d
});
parentTask.Child.Add(new TaskDetails
{
TaskId = 3,
TaskName = "Gather requirements",
StartDate = new DateTime(2024, 1, 6),
FinishDate = new DateTime(2024, 1, 10),
Progress = 50d
});
TaskDetails.Add(parentTask);
}
}Result: A functional Gantt control displaying project tasks with hierarchical structure, progress tracking, and timeline visualization.
// Create tasks with dependencies
var task1 = new TaskDetails
{
TaskId = 1,
TaskName = "Design",
StartDate = new DateTime(2024, 1, 1),
FinishDate = new DateTime(2024, 1, 10)
};
var task2 = new TaskDetails
{
TaskId = 2,
TaskName = "Development",
StartDate = new DateTime(2024, 1, 11),
FinishDate = new DateTime(2024, 1, 25)
};
// Task2 depends on Task1 (Finish-to-Start)
task2.Predecessor.Add(new Predecessor { GanttTaskIndex = 1, GanttTaskRelationship = GanttTaskRelationship.FinishToStart });
TaskDetails.Add(task1);
TaskDetails.Add(task2);// Define resources
var resources = new ObservableCollection<Resource>
{
new Resource { ID = 1, Name = "John Smith" },
new Resource { ID = 2, Name = "Jane Doe" }
};
// Assign resources to task
var task = new TaskDetails
{
TaskId = 1,
TaskName = "Implementation",
StartDate = new DateTime(2024, 1, 1),
FinishDate = new DateTime(2024, 1, 15),
Resources = resources
};<syncfusion:GanttControl x:Name="ganttControl"
ItemsSource="{Binding TaskDetails}"
ScheduleType="WeekWithDays"
ScheduleRangePadding="5">
</syncfusion:GanttControl>// Or in code-behind
ganttControl.ScheduleType = ScheduleType.WeekWithDays;
ganttControl.ScheduleRangePadding = 5;// Enable baseline support
var task = new TaskDetails
{
TaskId = 1,
TaskName = "Project Phase 1",
StartDate = new DateTime(2024, 1, 1),
FinishDate = new DateTime(2024, 2, 1),
BaselineStart = new DateTime(2024, 1, 1),
BaselineFinish = new DateTime(2024, 1, 25), // Original plan
Progress = 60d
};
// Actual finish extends beyond baseline - shows delay| Property | Type | Description |
|---|---|---|
ItemsSource | IEnumerable | Collection of TaskDetails to display |
GridWidth | GridLength | Width of the Gantt grid section |
ChartWidth | GridLength | Width of the Gantt chart section |
ScheduleType | ScheduleType | Timeline scale (Hours, Days, Weeks, etc.) |
ScheduleRangePadding | int | Padding in schedule units |
AutoExpandMode | GanttAutoExpandMode | Initial expansion state of tasks |
ShowDateWithTime | bool | Display time along with dates in grid |
| Property | Type | Description |
|---|---|---|
TaskId | int | Unique identifier for the task |
TaskName | string | Display name of the task |
StartDate | DateTime | Task start date/time |
FinishDate | DateTime | Task end date/time |
Duration | TimeSpan | Task duration (calculated or set) |
Progress | double | Completion percentage (0-100) |
Child | Collection | Child tasks for hierarchy |
Predecessor | Collection | Task dependencies |
Resources | Collection | Assigned resources |
ExpandAll() - Expand all task nodesCollapseAll() - Collapse all task nodesExportToXML() - Export project to XML fileImportFromXML() - Import project from XML file┌─────────────────────────────────────────────────────────────┐
│ GanttControl │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────┐ ┌─────────────────────────────┐ │
│ │ GanttGrid │ │ GanttChartVisualControl │ │
│ │ ┌────────────────┐ │ │ ┌────────────────────────┐ │ │
│ │ │ Header │ │ │ │ ScheduleHeader │ │ │
│ │ ├────────────────┤ │ │ ├────────────────────────┤ │ │
│ │ │ Parent Task │ │ │ │ ═══╗ │ │ │
│ │ │ ├─ Child 1 │ │ │ │ ║═══════ │ │ │
│ │ │ └─ Child 2 │ │ │ │ ║═════════════║ │ │
│ │ │ Parent Task │ │ │ │ ═══════════╗ │ │ │
│ │ │ ├─ Child 3 │ │ │ │ ║════ │ │ │
│ │ └────────────────┘ │ │ └────────────────────────┘ │ │
│ └──────────────────────┘ └─────────────────────────────┘ │
│ │
│ Data: ObservableCollection<TaskDetails> │
└─────────────────────────────────────────────────────────────┘~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.