Telerik UI for Windows Phone by Progress

This topic explains how to use the ItemTemplateSelector property to enable dynamic templating of slide view items.

Creating a template selector

We will create our template selector by inheriting the Telerik.Windows.Controls.DataTemplateSelector class, residing in the Telerik.Windows.Core assembly.

CopyC#
public class TemplateSelector : DataTemplateSelector
{
    public DataTemplate DefaultTemplate
    {
        get;
        set;
    }

    public DataTemplate SelectedTemplate
    {
        get;
        set;
    }

    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        RadSlideView view = ElementTreeHelper.FindVisualAncestor<RadSlideView>(container);
        if (view == null)
        {
            return null;
        }

        if (object.Equals(item, view.SelectedItem))
        {
            return this.SelectedTemplate;
        }

        return this.DefaultTemplate;
    }
}

Setting-up the XAML

Now let's instantiate our new selector in XAML and specify its SelectedTemplate and DefaultTemplate properties:

CopyXAML
<UserControl.Resources>
    <DataTemplate x:Key="selectedTemplate">
        <Border Background="{StaticResource PhoneSubtleBrush}">
            <TextBlock Text="{Binding}" FontSize="{StaticResource PhoneFontSizeLarge}"
                       HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </Border>
    </DataTemplate>
    <DataTemplate x:Key="defaultTemplate">
        <Border>
            <TextBlock Text="{Binding}" FontSize="{StaticResource PhoneFontSizeNormal}"
                       HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </Border>
    </DataTemplate>
    <local:TemplateSelector x:Key="templateSelector" 
                            DefaultTemplate="{StaticResource defaultTemplate}" 
                            SelectedTemplate="{StaticResource selectedTemplate}"/>
</UserControl.Resources>

Applying the selector

Finally we need to apply the selector to a RadSlideView instance:

CopyXAML
<telerikPrimitives:RadSlideView x:Name="radSlideView" 
                                ItemsSource="{Binding}" 
                                ItemTemplateSelector="{StaticResource templateSelector}">
</telerikPrimitives:RadSlideView>