As many of you already know with Q1 2012 we introduced a RadGanttView for Silverlight and WPF - a control designed with MVVM-friendly API.
In this blog post we will set-up a sample project with RadGanttView to get you started.
First, to add RadGanttView to a new or existing application we need to add references to the following assemblies:
Telerik.Windows.Controls
Telerik.Windows.Controls.GanttView
Telerik.Windows.Scheduling.Core
Now, let’s add the telerik namespace:
xmlns:telerik=http://schemas.telerik.com/2008/xaml/presentation
And add a sample definition of the control:
<telerik:RadGanttView/>
private IEnumerable <GanttTask> tasks;
public IEnumerable<GanttTask> Tasks
{
get
{
return tasks;
}
set
{
tasks = value;
OnPropertyChanged(() => Tasks);
}
}
var date = DateTime.Now;
var iterationTask = new GanttTask() { Start = date, End = date.AddDays(2), Title = "1/11/2012 - 1/12/2012 Iteration" };
var ganttAPI = new GanttTask() { Start = date, End = date.AddHours(16), Title = "Design public API" };
var ganttDemos = new GanttTask() { Start = date.AddHours(18), End = date.AddDays(1), Title = "Gantt Demos" };
var ganttRendering = new GanttTask() { Start = date.AddDays(1).AddHours(5), End = date.AddDays(2), Title = "Gantt Rendering" };
var milestone = new GanttTask() { Start = date.AddDays(2), End = date.AddDays(2).AddHours(1), Title = "Review", IsMilestone = true };
ganttAPI.SetRelations(new List<Relation>() { new Relation() { Task = ganttDemos } });
ganttDemos.SetRelations(new List<Relation>() { new Relation() { Task = ganttRendering } });
iterationTask.SetChildren(new ObservableCollection<GanttTask>() { ganttAPI, ganttDemos, ganttRendering, milestone });
var gTasks = new ObservableCollection<GanttTask>();
gTasks.Add(iterationTask);
this.Tasks = gTasks;
<telerik:RadGanttView TasksSource="{Binding Tasks}"/>
private VisibleRange visibleRange;
public VisibleRange VisibleRange
{
get
{
return visibleRange;
}
set
{
if (visibleRange != value)
{
visibleRange = value;
OnPropertyChanged(() => VisibleRange);
}
}
}
this.VisibleRange = new VisibleRange(date, date.AddDays(9));
А
<telerik:RadGanttView TasksSource="{Binding Tasks}"
VisibleRange="{Binding VisibleRange}"/>
<telerik:RadGanttView TasksSource="{Binding Tasks}" VisibleRange="{Binding VisibleRange}">
<telerik:RadGanttView.Columns>
<telerik:ColumnDefinition MemberBinding="{Binding Start}" Header="Start" ColumnWidth="140" />
<telerik:ColumnDefinition MemberBinding="{Binding End}" Header="End" ColumnWidth="140" />
</telerik:RadGanttView.Columns>
</telerik:RadGanttView>
<telerik:ColumnDefinition MemberBinding="{Binding Start}" Header="Start" ColumnWidth="140" >
<telerik:ColumnDefinition.CellEditTemplate>
<DataTemplate>
<telerik:RadDateTimePicker SelectedValue="{Binding Start}" />
</DataTemplate>
</telerik:ColumnDefinition.CellEditTemplate>
</telerik:ColumnDefinition>
<telerik:ColumnDefinition MemberBinding="{Binding End}" Header="End" ColumnWidth="140">
<telerik:ColumnDefinition.CellEditTemplate>
<DataTemplate>
<telerik:RadDateTimePicker SelectedValue="{Binding End}" />
</DataTemplate>
</telerik:ColumnDefinition.CellEditTemplate>
</telerik:ColumnDefinition>
Rossitza Fakalieva is a Technical Manager, Microsoft MVP in Developer Technologies and a Director of the Bulgarian chapter of the global Women Who Code organization. She previously worked on the Telerik engineering team and defines herself as .NET enthusiast. She loves to empower others to grow in their career and in the tech field—by teaching, by delivering courses and presentations, and as part of her daily job.