Category / Section
How to create Gantt Chart control in C# WPF?
5 mins read
Essential Gantt Chart for WPF is a MS Project-like Project Viewer with built-in grid, schedule and resource assignment constrains. The steps to create Gantt Chart control in C# WPF are provided below:
Step 1: Initialize the Gantt chart control.
Step 2: Create a collection of tasks in the view model and set the collection to the ItemsSource property of Gantt chart.
Step 3: Set the Gantt chart object to the content of the main window to display the Gantt chart.
The following code illustrates how to create Gantt Chart control in C# WPF
C#:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
GanttControl gantt = new GanttControl();
ViewModel model = new ViewModel();
gantt.ItemsSource = model.TaskCollection;
this.Content = gantt;
}
}
public class ViewModel
{
public ObservableCollection<TaskDetails> TaskCollection { get; set; }
public ViewModel()
{
TaskCollection = this.GetDataSource();
}
private ObservableCollection<TaskDetails> GetDataSource()
{
ObservableCollection<TaskDetails> task = new ObservableCollection<TaskDetails>();
task.Add(
new TaskDetails
{
TaskId = 1,
TaskName = "Scope",
StartDate = new DateTime(2011, 1, 3),
FinishDate = new DateTime(2011, 1, 14),
Progress = 40d
});
task[0].Child.Add(
new TaskDetails
{
TaskId = 2,
TaskName = "Determine project office scope",
StartDate = new DateTime(2011, 1, 3),
FinishDate = new DateTime(2011, 1, 5),
Progress = 20d
});
task[0].Child.Add(
new TaskDetails
{
TaskId = 3,
TaskName = "Justify project office via business model",
StartDate = new DateTime(2011, 1, 6),
FinishDate = new DateTime(2011, 1, 7),
Duration = new TimeSpan(1, 0, 0, 0),
Progress = 20d
});
task[0].Child.Add(
new TaskDetails
{
TaskId = 4,
TaskName = "Secure executive sponsorship",
StartDate = new DateTime(2011, 1, 10),
FinishDate = new DateTime(2011, 1, 14),
Duration = new TimeSpan(1, 0, 0, 0),
Progress = 20d
});
task[0].Child.Add(
new TaskDetails
{
TaskId = 5,
TaskName = "Secure complete",
StartDate = new DateTime(2011, 1, 14),
FinishDate = new DateTime(2011, 1, 14),
Duration = new TimeSpan(1, 0, 0, 0),
Progress = 20d
});
return task;
}
}
Output:

You can find the sample in the link.