This question is locked. New answers and comments are not allowed.
Hi
Right now, I have TimerulerMajorTickStringFormat="{}{0:%d}", which gives me "tickstrings" looking like the image below.
The ticks will look like 1,2,3...31,1,2,3...30,1,2... -- since %d is taking the first day of each month.
What I'm aiming for is something that looks like 0,1,2,3,4,5,6,7... -- in other words, the difference between the date and the start date in TotalDays.
Is this possible to achieve?
Thanks

Right now, I have TimerulerMajorTickStringFormat="{}{0:%d}", which gives me "tickstrings" looking like the image below.
The ticks will look like 1,2,3...31,1,2,3...30,1,2... -- since %d is taking the first day of each month.
What I'm aiming for is something that looks like 0,1,2,3,4,5,6,7... -- in other words, the difference between the date and the start date in TotalDays.
Is this possible to achieve?
Thanks
2 Answers, 1 is accepted
0
Accepted
Oscar Wahlen
Top achievements
Rank 1
answered on 23 Nov 2012, 09:11 AM
I believe you can do that with a custom TimeRulerItemTemplateSelector and a value converter. I will give an example below.
MainPage.xaml
MainPage.xaml.cs
TimeRulerItemTemplateSelectorEx.cs
TimeRulerItemTemplateSelectorEx.xaml
MinorTickToFormattedDateConverter.cs
Model.cs
MainPage.xaml
<UserControl x:Class="Examples.MainPage" xmlns:local="clr-namespace:Examples" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"> <UserControl.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="TimeRulerItemTemplateSelectorEx.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </UserControl.Resources> <Grid> <Grid.Resources> <local:ScheduleViewModel x:Key="Model" /> </Grid.Resources> <telerik:RadScheduleView DataContext="{StaticResource Model}" AppointmentsSource="{Binding AppointmentsSource, Mode=OneWay}" TimeRulerItemTemplateSelector="{StaticResource TimeRulerItemTemplateSelectorEx}" VisibleRangeChanged="OnVisibleRangeChanged"> <telerik:RadScheduleView.ViewDefinitions> <telerik:TimelineViewDefinition /> </telerik:RadScheduleView.ViewDefinitions> </telerik:RadScheduleView> </Grid> </UserControl>MainPage.xaml.cs
using System; using System.Windows.Controls; namespace Examples { using Telerik.Windows.Controls; public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); } private void OnVisibleRangeChanged(object sender, EventArgs e) { Model.VisibleRange = ((RadScheduleView)sender).VisibleRange; } } }TimeRulerItemTemplateSelectorEx.cs
using System.Windows; namespace Examples { using Telerik.Windows.Controls; public sealed class TimeRulerItemTemplateSelectorEx : TimeRulerItemTemplateSelector { public TimeRulerItemTemplateSelectorEx() : base() { } public override DataTemplate SelectTemplate(object item, DependencyObject container, ViewDefinitionBase activeViewDeifinition) { return base.SelectTemplate(item, container, activeViewDeifinition); } } }TimeRulerItemTemplateSelectorEx.xaml
<ResourceDictionary xmlns:local="clr-namespace:Examples"> <local:MinorTickToFormattedDateConverter x:Key="MinorTickToFormattedDateConverter" /> <local:TimeRulerItemTemplateSelectorEx x:Key="TimeRulerItemTemplateSelectorEx"> <local:TimeRulerItemTemplateSelectorEx.HorizontalTimelineGroupTemplate> <DataTemplate /> </local:TimeRulerItemTemplateSelectorEx.HorizontalTimelineGroupTemplate> <local:TimeRulerItemTemplateSelectorEx.HorizontalTimelineMajorItemTemplate> <DataTemplate> <StackPanel HorizontalAlignment="Center"> <TextBlock Text="{Binding DateTime, Mode=OneWay, Converter={StaticResource MinorTickToFormattedDateConverter}}" Foreground="#FF000000" /> </StackPanel> </DataTemplate> </local:TimeRulerItemTemplateSelectorEx.HorizontalTimelineMajorItemTemplate> <local:TimeRulerItemTemplateSelectorEx.HorizontalTimelineMinorItemTemplate> <DataTemplate /> </local:TimeRulerItemTemplateSelectorEx.HorizontalTimelineMinorItemTemplate> <local:TimeRulerItemTemplateSelectorEx.HorizontalWeekMajorItemTemplate> <DataTemplate /> </local:TimeRulerItemTemplateSelectorEx.HorizontalWeekMajorItemTemplate> <local:TimeRulerItemTemplateSelectorEx.HorizontalWeekMinorItemTemplate> <DataTemplate /> </local:TimeRulerItemTemplateSelectorEx.HorizontalWeekMinorItemTemplate> <local:TimeRulerItemTemplateSelectorEx.HorizontalDayMajorItemTemplate> <DataTemplate /> </local:TimeRulerItemTemplateSelectorEx.HorizontalDayMajorItemTemplate> <local:TimeRulerItemTemplateSelectorEx.HorizontalDayMinorItemTemplate> <DataTemplate /> </local:TimeRulerItemTemplateSelectorEx.HorizontalDayMinorItemTemplate> <local:TimeRulerItemTemplateSelectorEx.VerticalTimelineGroupTemplate> <DataTemplate /> </local:TimeRulerItemTemplateSelectorEx.VerticalTimelineGroupTemplate> <local:TimeRulerItemTemplateSelectorEx.VerticalDayMajorItemTemplate> <DataTemplate /> </local:TimeRulerItemTemplateSelectorEx.VerticalDayMajorItemTemplate> <local:TimeRulerItemTemplateSelectorEx.VerticalDayMinorItemTemplate> <DataTemplate /> </local:TimeRulerItemTemplateSelectorEx.VerticalDayMinorItemTemplate> <local:TimeRulerItemTemplateSelectorEx.VerticalWeekMajorItemTemplate> <DataTemplate /> </local:TimeRulerItemTemplateSelectorEx.VerticalWeekMajorItemTemplate> <local:TimeRulerItemTemplateSelectorEx.VerticalWeekMinorItemTemplate> <DataTemplate /> </local:TimeRulerItemTemplateSelectorEx.VerticalWeekMinorItemTemplate> </local:TimeRulerItemTemplateSelectorEx> </ResourceDictionary>MinorTickToFormattedDateConverter.cs
using System; namespace Examples { using System.Windows.Data; public sealed class MinorTickToFormattedDateConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is DateTime && Model.VisibleRange != null) { return ((DateTime)value).Subtract(Model.VisibleRange.Start).TotalDays; } return null; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } } }Model.cs
namespace Examples { using System.Collections.ObjectModel; using System.ComponentModel; using Telerik.Windows.Controls.ScheduleView; public sealed class ScheduleViewModel : INotifyPropertyChanged { private ObservableCollection<Appointment> _oAppointmentsSource; public ScheduleViewModel() { this._oAppointmentsSource = new ObservableCollection<Appointment>(); } internal static IDateSpan VisibleRange { get; set; } public ObservableCollection<Appointment> AppointmentsSource { get { return this._oAppointmentsSource; } set { this._oAppointmentsSource = value; this.OnPropertyChanged("AppointmentsSource"); } } public event PropertyChangedEventHandler PropertyChanged; public void OnPropertyChanged(string propertyName) { if (this.PropertyChanged != null) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } } }0
Awef
Top achievements
Rank 1
answered on 23 Nov 2012, 07:12 PM
Thank you. That works.