Timeline View in UWP Scheduler (SfSchedule)
10 May 202124 minutes to read
TimeLine view is used to displays complete TimeLine in selected day, the default visible day of Schedule will be current day. Appointments are added in particular timeslot based on its timeline.

View Header Appearance
You can customize the default appearance of schedule timeline view header using TimeLineViewHeaderStyle property of SfSchedule.
<schedule:SfSchedule x:Name="schedule" ScheduleType="TimeLine">
<schedule:SfSchedule.TimeLineViewHeaderStyle>
<schedule:ScheduleTimeLineViewHeaderStyle
TimeLineViewCurrentDateBackground="Yellow"
TimeLineViewCurrentDateForeground="Blue"
TimeLineViewHeaderBackground="LightGray"
TimeLineViewHeaderFontFamily="Calibri "
TimeLineViewHeaderFontWeight="Bold"
TimeLineViewHeaderHeight="50"
TimeLineViewHeaderTextColor="Black"
TimeLineViewHeaderTextFontStyle="Normal"
TimeLineViewHeaderTextHorizontalAlignment="Stretch"
TimeLineViewHeaderTextSize="14"
TimeLineViewHeaderTextVerticalAlignment="Center" />
</schedule:SfSchedule.TimeLineViewHeaderStyle>
</schedule:SfSchedule>schedule.ScheduleType = ScheduleType.TimeLine;
schedule.TimeLineViewHeaderStyle = new ScheduleTimeLineViewHeaderStyle()
{
TimeLineViewCurrentDateBackground = new SolidColorBrush(Colors.Yellow),
TimeLineViewCurrentDateForeground = new SolidColorBrush(Colors.Blue),
TimeLineViewHeaderBackground = new SolidColorBrush(Colors.LightGray),
TimeLineViewHeaderFontFamily = new FontFamily("Calibri"),
TimeLineViewHeaderFontWeight = FontWeights.Bold,
TimeLineViewHeaderHeight = 50,
TimeLineViewHeaderTextColor = new SolidColorBrush(Colors.Black),
TimeLineViewHeaderTextFontStyle = FontStyle.Normal,
TimeLineViewHeaderTextHorizontalAlignment = HorizontalAlignment.Center,
TimeLineViewHeaderTextSize = 14,
TimeLineViewHeaderTextVerticalAlignment = VerticalAlignment.Center
};
Change Time Interval
You can customize the time intervals of timeslots in timeline by using TimeInterval property of SfSchedule.
<schedule:SfSchedule
x:Name="schedule"
TimeInterval="FifteenMin"
ScheduleType="TimeLine" />schedule.ScheduleType = ScheduleType.TimeLine;
schedule.TimeInterval= TimeInterval.FifteenMin;
You can also set the custom time interval for timeslots by using CustomTimeInterval property of SfSchedule by making TimeInterval as Custom.
<schedule:SfSchedule
x:Name="schedule"
TimeInterval="Custom"
CustomTimeInterval="120"
ScheduleType="TimeLine" />schedule.TimeInterval= TimeInterval.Custom;
schedule.CustomTimeInterval = 120;
Change Working Hours
Working hours in TimeLine of Schedule control will be differentiated with non-working hours by separate color. By default working hours will be between 09 to 18. You can customize the working hours by setting WorkStartHour and WorkEndHour properties of SfSchedule.
Non-working hours can be disabled by setting ShowNonWorkingHours to false and non-working hours color can be changed by using NonWorkingHourBrush property of SfSchedule.
<schedule:SfSchedule
x:Name="schedule"
IsHighLightWorkingHours="True"
NonWorkingHourBrush="Blue"
ScheduleType="TimeLine"
ShowNonWorkingHours="True"
WorkEndHour="20"
WorkStartHour="8" />schedule.WorkStartHour = 8;
schedule.WorkEndHour = 20;
schedule.IsHighLightWorkingHours = true;
schedule.NonWorkingHourBrush = new SolidColorBrush(Colors.Blue);
schedule.ShowNonWorkingHours = true;
Collapse hours
You can collapse the hours in TimeLineView and DayView by adding hours in the CollapsedHour collection using the CollapsedHours property.
schedule.CollapsedHours.Add(new ScheduleCollapsedHour()
{
StartHour = 02,
EndHour = 06,
});
Timeslot Appearance
You can customize the default timeslot appearance in timeline view by changing its stoke dash array by using MajorTickStrokeDashArray and MinorTickStrokeDashArray properties of SfSchedule. And, you can change the color by using MajorTickStroke and MinorTickStroke properties of SfSchedule control.
<schedule:SfSchedule
x:Name="schedule"
MajorTickStroke="Blue"
MinorTickStroke="Blue"
MajorTickStrokeDashArray="10"
MinorTickStrokeDashArray="10"
ScheduleType="TimeLine" />schedule.MajorTickStroke = new SolidColorBrush(Colors.Blue);
schedule.MinorTickStroke = new SolidColorBrush(Colors.Blue);
schedule.MajorTickStrokeDashArray = new DoubleCollection() {10};
schedule.MinorTickStrokeDashArray = new DoubleCollection() {10};
Non-Accessible timeslots.
You can restrict/allocate certain timeslot as Non-accessible block using NonAccessibleBlocks property of SfSchedule, so that can allocate those timeslots for predefined events/activities like Lunch hour.
<schedule:SfSchedule ScheduleType="TimeLine">
<schedule:SfSchedule.NonAccessibleBlocks>
<schedule:NonAccessibleBlock
Background="LightPink"
EndHour="8.00"
Label="Non Accessible Block"
StartHour="6.00" />
</schedule:SfSchedule.NonAccessibleBlocks>
</schedule:SfSchedule>schedule.ScheduleType = ScheduleType.TimeLine;
schedule.NonAccessibleBlocks.Add(new NonAccessibleBlock()
{
Background = new SolidColorBrush(Colors.LightPink),
StartHour = 6.00,
EndHour = 8.00,
Label = "Non Accessible Block"
});
Time Label Formatting
You can customize the default label format of time in timeline view by using MajorTickTimeFormat and MinorTickTimeFormat properties of SfSchedule.
<schedule:SfSchedule
x:Name="schedule"
MajorTickTimeFormat="HH"
MinorTickTimeFormat="HH mm"
ScheduleType="TimeLine" />schedule.ScheduleType = ScheduleType.TimeLine;
schedule.MajorTickTimeFormat = "HH";
schedule.MinorTickTimeFormat = "HH mm";
Time Label appearance
You can the customize the default color of time label in timeline view by using the MajorTickLabelStroke and MinorTickLabelStroke properties of SfSchedule.
<schedule:SfSchedule
x:Name="schedule"
MajorTickLabelStroke="Blue"
MinorTickLabelStroke="Blue"
ScheduleType="TimeLine" />schedule.MajorTickLabelStroke=new SolidColorBrush(Colors.Blue);
schedule.MinorTickLabelStroke = new SolidColorBrush(Colors.Blue);You can the customize the default font size of time label in timeline view by using the MajorTickLabelSize and MinorTickLabelSize properties of SfSchedule.
<schedule:SfSchedule
x:Name="schedule"
MajorTickLabelSize="20"
MinorTickLabelSize="20"
ScheduleType="TimeLine" />schedule.MajorTickLabelSize=20;
schedule.MinorTickLabelSize =20;
Selection
You can customize the default appearance of selection UI in the timeslots.
- Selection customization using style
- Selection customization using custom View.
Selection customization using style
You can customize the timeslot selection by using ScheduleSelectionStyle property of SfSchedule.
<schedule:SfSchedule ScheduleType="TimeLine">
<schedule:SfSchedule.ScheduleSelectionStyle>
<schedule:ScheduleSelectionStyle
Background="Blue"
BorderBrush="Black"
BorderCornerRadius="5"
BorderThickness="5" />
</schedule:SfSchedule.ScheduleSelectionStyle>
</schedule:SfSchedule>schedule.ScheduleSelectionStyle= new ScheduleSelectionStyle()
{
Background = new SolidColorBrush(Colors.Blue),
BorderBrush = new SolidColorBrush(Colors.Black),
BorderCornerRadius = new CornerRadius(5),
BorderThickness = new Thickness(5)
};
Selection customization using custom View.
You can replace the default selection UI with your custom view by setting SelectionView property of SfSchedule.
<schedule:SfSchedule x:Name="schedule" ScheduleType="TimeLine">
<schedule:SfSchedule.SelectionView>
<Button Background="BlueViolet" Content="+NewEvent" />
</schedule:SfSchedule.SelectionView>
</schedule:SfSchedule>schedule.SelectionView=new Button()
{
Content = "+NewEvent",
Background = new SolidColorBrush(Colors.BlueViolet)
};
Configuration Resources
The Schedule control allows you to define resources that can be assigned to appointments. Resources let you associate additional information with your appointments. The schedule can group appointments based on the resources associated with them.
Adding resource
Resource can be added to the schedule control by setting Resource and ScheduleResourceTypeCollection of SfSchedule. After that add the ResourceType for ScheduleResourceTypeCollection and assign Resource to ResourceType.
<schedule:SfSchedule
x:Name="schedule"
Resource="Doctors"
ScheduleType="TimeLine">
<schedule:SfSchedule.ScheduleResourceTypeCollection>
<schedule:ResourceType TypeName="Doctors">
<schedule:Resource
DisplayName="Dr.Jacob"
ResourceName="Dr.Jacob"
TypeName="Doctors" />
<schedule:Resource
DisplayName="Dr.Darsy"
ResourceName="Dr.Darsy"
TypeName="Doctors" />
</schedule:ResourceType>
</schedule:SfSchedule.ScheduleResourceTypeCollection>
</schedule:SfSchedule>var currentDate=DateTime.Now;
ScheduleAppointment app = new ScheduleAppointment()
{
StartTime = currentDate.Date.AddHours(5),
EndTime = currentDate.Date.AddHours(6),
Subject = "Meeting",
Location = "Chennai",
AppointmentBackground =new SolidColorBrush(Colors.Red)
};
app.ResourceCollection.Add(new Resource()
{
ResourceName = "Dr.Jacob",
TypeName = "Doctors"
});
ScheduleAppointment app1 = new ScheduleAppointment()
{
StartTime = currentDate.Date.AddHours(7),
EndTime = currentDate.Date.AddHours(8),
Subject = "Conference",
Location = "Chennai",
AppointmentBackground = new SolidColorBrush(Colors.Yellow)
};
app1.ResourceCollection.Add(new Resource()
{
ResourceName = "Dr.Darsy",
TypeName = "Doctors"
});
schedule.Appointments.Add(app);
schedule.Appointments.Add(app1);
Customizing resource visibility
This feature supports to display ‘N’ number of rows in TimeLine view. You can achieve this by specifying the count of resources that needs to be displayed per view. This support is offered for TimeLine view alone.
This support can be enabled by using property TimeLineViewRowCount in SfSchedule. By default, its value is “zero”.
<schedule:SfSchedule
x:Name="schedule" TimeLineViewRowCount="1"
Resource="Doctors"
ScheduleType="TimeLine">
<schedule:SfSchedule.ScheduleResourceTypeCollection>
<schedule:ResourceType TypeName="Doctors">
<schedule:Resource
DisplayName="Dr.Jacob"
ResourceName="Dr.Jacob"
TypeName="Doctors" />
<schedule:Resource
DisplayName="Dr.Darsy"
ResourceName="Dr.Darsy"
TypeName="Doctors" />
</schedule:ResourceType>
</schedule:SfSchedule.ScheduleResourceTypeCollection>
</schedule:SfSchedule>schedule.TimeLineViewRowCount = 1;
var currentDate=DateTime.Now;
ScheduleAppointment app = new ScheduleAppointment()
{
StartTime = currentDate.Date.AddHours(5),
EndTime = currentDate.Date.AddHours(6),
Subject = "Meeting",
Location = "Chennai",
AppointmentBackground =new SolidColorBrush(Colors.Red)
};
app.ResourceCollection.Add(new Resource()
{
ResourceName = "Dr.Jacob",
TypeName = "Doctors"
});
ScheduleAppointment app1 = new ScheduleAppointment()
{
StartTime = currentDate.Date.AddHours(7),
EndTime = currentDate.Date.AddHours(8),
Subject = "Conference",
Location = "Chennai",
AppointmentBackground = new SolidColorBrush(Colors.Yellow)
};
app1.ResourceCollection.Add(new Resource()
{
ResourceName = "Dr.Darsy",
TypeName = "Doctors"
});
schedule.Appointments.Add(app);
schedule.Appointments.Add(app1);