New to Telerik UI for WPFStart a free 30-day trial

Data Binding

Updated on Sep 15, 2025

RadFluidContentControl provides data binding support. This means that you can bind its Content, SmallContent and LargeContent properties and also define a DataTemplate for each content.

This article demonstrates how to data bind the control to a simple business model.

Defining the model

The model will contain few string properties for each content and also a property that holds the current state of the control.

Example 1: Defining the model

C#
	public class FluidContentModel : ViewModelBase
    {
        private FluidContentControlState state;        
        
        public FluidContentControlState State
        {
            get { return this.state; }
            set
            {
                this.state = value;
                this.OnPropertyChanged("State");
            }
        }

        public string SmallContent { get; set; }
        public string NormalContent { get; set; }
        public string LargeContent { get; set; }
    }    

The ViewModelBase class is part of the Telerik.Windows.Controls.dll. Read more about this in the ViewModelBase article.

Setting up the View

When the model is set up, it can be provided to the RadFluidContentControl via its DataContext property. In the example we will set it explicitly but in the general case the property will be probably inherited from the parent control.

Example 3: Setting up the model

C#
	public partial class MyUserControl : UserControl
    {
        public MyUserControl()
        {
            InitializeComponent();

            FluidContentModel model = new FluidContentModel();
            model.SmallContent = "Small content";
            model.NormalContent = "Normal content";
            model.LargeContent = "Large content";
            model.State = FluidContentControlState.Normal;
            this.radFluidContentControl.DataContext = model;            
        }
	}

Example 4: Setting up the control

XAML
	<telerik:RadFluidContentControl x:Name="radFluidContentControl"
									ContentChangeMode="Manual"
									State="{Binding State}"
									SmallContent="{Binding SmallContent}"
									Content="{Binding NormalContent}" 
									LargeContent="{Binding LargeContent}">
		<telerik:RadFluidContentControl.SmallContentTemplate>
			<DataTemplate>
				<Border Background="Bisque">
					<TextBlock Text="{Binding}" VerticalAlignment="Center" TextAlignment="Center" />
				</Border>
			</DataTemplate>
		</telerik:RadFluidContentControl.SmallContentTemplate>
		<telerik:RadFluidContentControl.ContentTemplate>
			<DataTemplate>
				<Border Background="Olive">
					<TextBlock Text="{Binding}" VerticalAlignment="Center" TextAlignment="Center" />
				</Border>
			</DataTemplate>
		</telerik:RadFluidContentControl.ContentTemplate>
		<telerik:RadFluidContentControl.LargeContentTemplate>
			<DataTemplate>
				<Border Background="LightGoldenrodYellow">
					<TextBlock Text="{Binding}" VerticalAlignment="Center" TextAlignment="Center" />
				</Border>
			</DataTemplate>
		</telerik:RadFluidContentControl.LargeContentTemplate>
	</telerik:RadFluidContentControl>

Each content property has a corresponding content template property, so you can define a DataTemplate and bind it's controls to the view model as shown in Example 4.

Defining Additiona Logic for Updating the State

This section shows how to link the State property of the RadFluidContentControl to a drop down list via the State property defined in the view model.

Example 5: Setting up the control

XAML
	<Grid x:Name="gridPanel">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <ComboBox SelectedValue="{Binding State, Mode=TwoWay}" SelectedValuePath="Content" 
				  VerticalAlignment="Top" Margin="20 0 20 0">
            <ComboBoxItem Content="{x:Static telerik:FluidContentControlState.Small}" />
            <ComboBoxItem Content="{x:Static telerik:FluidContentControlState.Normal}" />
            <ComboBoxItem Content="{x:Static telerik:FluidContentControlState.Large}" />
        </ComboBox>
        <telerik:RadFluidContentControl x:Name="contentControl"
                                        Grid.Column="1"
                                        ContentChangeMode="Manual"
                                        State="{Binding State}"
                                        SmallContent="{Binding SmallContent}"
                                        Content="{Binding NormalContent}" 
                                        LargeContent="{Binding LargeContent}">
            <telerik:RadFluidContentControl.SmallContentTemplate>
                <DataTemplate>
                    <Border Background="Bisque">
                        <TextBlock Text="{Binding}" VerticalAlignment="Center" TextAlignment="Center" />
                    </Border>
                </DataTemplate>
            </telerik:RadFluidContentControl.SmallContentTemplate>
            <telerik:RadFluidContentControl.ContentTemplate>
                <DataTemplate>
                    <Border Background="Olive">
                        <TextBlock Text="{Binding}" VerticalAlignment="Center" TextAlignment="Center" />
                    </Border>
                </DataTemplate>
            </telerik:RadFluidContentControl.ContentTemplate>
            <telerik:RadFluidContentControl.LargeContentTemplate>
                <DataTemplate>
                    <Border Background="LightGoldenrodYellow">
                        <TextBlock Text="{Binding}" VerticalAlignment="Center" TextAlignment="Center" />
                    </Border>
                </DataTemplate>
            </telerik:RadFluidContentControl.LargeContentTemplate>
        </telerik:RadFluidContentControl>
    </Grid>

To make the binding in the drop down list work we need to move the data context from the RadFluidContentControl parent control that hosts it.

Example 6: Setting up the control

C#
	this.gridPanel.DataContext = model;

Figure 1: Data binding example

fluidcontentcontrol-data-binding-0

See Also