New to Telerik UI for WPF? Start a free 30-day trial
Data Binding and Data Templates
Updated on Sep 15, 2025
RadBook is an ItemsControl and can be populated by using its ItemsSource property.
RadBook contains two additional properties used for templating:
-
LeftPageTemplate - defines a data template for all left pages.
-
RightPageTemplate - defines a data template for all right pages.
Below is an example of how to bind RadBook to a collection of items that display photos and info.
Example 1: Setting up the ItemsSource of RadBook
C#
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
// create the collection of photos
ObservableCollection<PhotoItem> myPhotos = new ObservableCollection<PhotoItem>();
myPhotos.Add(new PhotoItem()
{
Title = "Chrysanthemum",
Image = "Chrysanthemum.jpg",
DateTaken = DateTime.Parse("3/14/2008 1:59 PM"),
Size = "858 KB"
});
myPhotos.Add(new PhotoItem()
{
Title = "Desert",
Image = "Desert.jpg",
DateTaken = DateTime.Parse("2/12/2008 3:12 PM"),
Size = "458 KB"
});
myPhotos.Add(new PhotoItem()
{
Title = "Hydrangeas",
Image = "Hydrangeas.jpg",
DateTaken = DateTime.Parse("3/25/2008 2:22 PM"),
Size = "843 KB"
});
myPhotos.Add(new PhotoItem()
{
Title = "Jellyfish",
Image = "Jellyfish.jpg",
DateTaken = DateTime.Parse("1/14/2008 4:32 PM"),
Size = "456 KB"
});
myPhotos.Add(new PhotoItem()
{
Title = "Koala",
Image = "Koala.jpg",
DateTaken = DateTime.Parse("6/14/2008 2:46 PM"),
Size = "654 KB"
});
myPhotos.Add(new PhotoItem()
{
Title = "LightHouse",
Image = "LightHouse.jpg",
DateTaken = DateTime.Parse("8/23/2008 3:59 PM"),
Size = "930 KB"
});
myPhotos.Add(new PhotoItem()
{
Title = "Penguis",
Image = "Penguis.jpg",
DateTaken = DateTime.Parse("3/14/2008 1:59 PM"),
Size = "623 KB"
});
RadBook1.ItemsSource = myPhotos;
}
}
// create a class representing a single photo
public class PhotoItem
{
public string Image { get; set; }
public string Title { get; set; }
public DateTime DateTaken { get; set; }
public string Size { get; set; }
}Example 2: Binding RadBook to a collection of business objects
XAML
<Grid x:Name="LayoutRoot" Background="Purple">
<Grid.Resources>
<!-- Declare the template used for the left pages -->
<DataTemplate x:Key="LeftPageTemplate">
<StackPanel Margin="10" Background="LightGray">
<TextBlock FontSize="24"
FontWeight="Bold"
Text="{Binding Title}" />
<Image Width="240"
Height="320"
Source="{Binding Image}" />
<StackPanel HorizontalAlignment="Stretch" Orientation="Horizontal">
<TextBlock FontWeight="Bold" Text="Date Taken:" />
<TextBlock Text="{Binding DateTaken}" />
</StackPanel>
<StackPanel HorizontalAlignment="Stretch" Orientation="Horizontal">
<TextBlock FontWeight="Bold" Text="Size:" />
<TextBlock Text="{Binding Size}" />
</StackPanel>
</StackPanel>
</DataTemplate>
<!-- Declare the template used for the right pages -->
<DataTemplate x:Key="RightPageTemplate">
<StackPanel Margin="10" Background="LightBlue">
<TextBlock HorizontalAlignment="Right"
FontSize="24"
FontWeight="Bold"
Text="{Binding Title}" />
<Image Width="240"
Height="320"
Source="{Binding Image}" />
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<TextBlock FontWeight="Bold" Text="Date Taken:" />
<TextBlock Text="{Binding DateTaken}" />
</StackPanel>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<TextBlock FontWeight="Bold" Text="Size:" />
<TextBlock Text="{Binding Size}" />
</StackPanel>
</StackPanel>
</DataTemplate>
</Grid.Resources>
<telerik:RadBook x:Name="RadBook1"
Margin="50"
LeftPageTemplate="{StaticResource LeftPageTemplate}"
RightPageTemplate="{StaticResource RightPageTemplate}" />
</Grid>
