DataTemplate Class


Describes the visual structure of a data object.

public class DataTemplate : System.Windows.FrameworkTemplate


The following example shows how to create a DataTemplate inline. The DataTemplate specifies that each data item appears as three TextBlock elements within a StackPanel. In this example, the data object is a class called Task. Note that each TextBlock element in this template is bound to a property of the Task class.

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}">
         <TextBlock Text="{Binding Path=TaskName}" />
         <TextBlock Text="{Binding Path=Description}"/>
         <TextBlock Text="{Binding Path=Priority}"/>

It is more common to define a DataTemplate in the resources section so it can be a reusable object, as in the following example:

<DataTemplate x:Key="myTaskTemplate">
    <TextBlock Text="{Binding Path=TaskName}" />
    <TextBlock Text="{Binding Path=Description}"/>
    <TextBlock Text="{Binding Path=Priority}"/>

Now you can use myTaskTemplate as a resource, as in the following example:

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}"
         ItemTemplate="{StaticResource myTaskTemplate}"/>

For the complete sample, see Introduction to Data Templating Sample.


You use a DataTemplate to specify the visualization of your data objects. DataTemplate objects are particularly useful when you are binding an ItemsControl such as a ListBox to an entire collection. Without specific instructions, a ListBox displays the string representation of the objects in a collection. In that case, you can use a DataTemplate to define the appearance of your data objects. The content of your DataTemplate becomes the visual structure of your data objects.

For an in-depth discussion, see Data Templating Overview.



Initializes a new instance of the DataTemplate class.


Initializes a new instance of the DataTemplate class with the specified DataType property.



Gets the default key of the DataTemplate.


Gets or sets the type for which this DataTemplate is intended.


Gets a collection of triggers that apply property values or perform actions based on one or more conditions.



Checks the templated parent against a set of rules.

Equals(Object) Inherited from Object
Equals(Object, Object) Inherited from Object
GetHashCode() Inherited from Object
GetType() Inherited from Object
MemberwiseClone() Inherited from Object
ReferenceEquals(Object, Object) Inherited from Object
ToString() Inherited from Object
FindName(String, FrameworkElement) Inherited from FrameworkTemplate
HasContent Inherited from FrameworkTemplate
IsSealed Inherited from FrameworkTemplate
LoadContent() Inherited from FrameworkTemplate
RegisterName(String, Object) Inherited from FrameworkTemplate
Resources Inherited from FrameworkTemplate
Seal() Inherited from FrameworkTemplate
ShouldSerializeResources(XamlDesignerSerializationManager) Inherited from FrameworkTemplate
ShouldSerializeVisualTree() Inherited from FrameworkTemplate
INameScope.FindName(String) Inherited from FrameworkTemplate
IQueryAmbient.IsAmbientPropertyAvailable(String) Inherited from FrameworkTemplate
Template Inherited from FrameworkTemplate
UnregisterName(String) Inherited from FrameworkTemplate
VisualTree Inherited from FrameworkTemplate
CheckAccess() Inherited from DispatcherObject
Dispatcher Inherited from DispatcherObject
VerifyAccess() Inherited from DispatcherObject

Applies to