In the upcoming Q2 release RadScheduler  will include a new property called AppointmentTemplateSelector. This property will be included in both  Silverlight and WPF versions of the control.

Using it,  you will be able to easily apply different DataTemplate  to the appointments by any custom condition.

All you need to do is to create a custom class inheriting from the  DataTemplateSelector class and override the SelectTemplate method.

 

For example:

public class AppointmentTemplateSelector : DataTemplateSelector 
    { 
        public DataTemplate RedAppointmentTemplate { getset; } 
        public DataTemplate GreenAppointmentTemplate { getset; } 
 
        public override DataTemplate SelectTemplate(object item, DependencyObject container) 
        { 
            base.SelectTemplate(item, container); 
 
            AppointmentSlot appointmentSlot = item as AppointmentSlot; 
            var appointment = appointmentSlot.Occurrence.Appointment; 
 
            if (appointment != null && appointment.Start.Date == DateTime.Today) 
            { 
                return RedAppointmentTemplate; 
            } 
 
            return GreenAppointmentTemplate; 
        } 
    } 

 

Then you need to define two DataTemplates – one for the “red” appointments and another for the “green” appointments:

      

  <DataTemplate x:Key="RedAppointmentTemplate"
 
                <Border     Background="Red” 
 
                BorderThickness="1" 
 
                CornerRadius="8" Margin="-2">  
 
                    <TextBox x:Name="PART_SubjectTextBox" Margin="7 0 18 0" 
 
                    VerticalAlignment="Top"  HorizontalAlignment="Left" 
 
                    Text="{Binding Path=Occurrence.Appointment.Subject}" 
 
                    Foreground="Black" TextWrapping="Wrap"  MaxWidth="100" /> 
 
               </Border> 
 
 </DataTemplate> 
 
  
  <DataTemplate x:Key="GreenAppointmentTemplate"
 
                <Border     Background="LightGreen” 
 
                BorderThickness="1" 
 
                CornerRadius="8" Margin="-2">  
 
                    <TextBox x:Name="PART_SubjectTextBox" Margin="7 0 18 0" 
 
                    VerticalAlignment="Top"  HorizontalAlignment="Left" 
 
                    Text="{Binding Path=Occurrence.Appointment.Subject}" 
 
                    Foreground="Black" TextWrapping="Wrap"  MaxWidth="100" /> 
 
               </Border> 
 
 </DataTemplate> 
 
   

 Add the AppointmentTemplateSelector to the resources:

<local:AppointmentTemplateSelector x:Key="ItemTemplateSelector" 
 
RedAppointmentTemplate ="{StaticResource RedAppointmentTemplate}" 
 
GreenAppointmentTemplate ="{StaticResource GreenAppointmentTemplate }" /> 

Set the AppointmentTemplateSelector  property of RadScheduler:

<telerik:RadScheduler x:Name="scheduler"  AppointmentTemplateSelector="{StaticResource ItemTemplateSelector}" /> 

 

The result of the above code will be red today’s appointments, whereas all other appointments will appear in green:


scheduler

 

Download the source code for Silverlight and stay tuned for more in our Q2 release.


Rossitza-Fakalieva
About the Author

Rossitza Fakalieva

Rossitza Fakalieva is Manager of the Progress Desktop UI & Tools division, which develops the UI for WPF, UI for WinForms and Telerik Reporting products. She started her career on the Telerik ASP.NET team in 2006 as a support officer and passed through the position of software developer to the position of senior manager. Off work, she enjoys cooking, watching movies and reading books.

Related Posts

Comments

Comments are disabled in preview mode.