DataTemplate Class

Definition

Describes the visual structure of a data object.

[System.Windows.Markup.DictionaryKeyProperty("DataTemplateKey")]
public class DataTemplate : System.Windows.FrameworkTemplate
Inheritance
Derived
Attributes

Examples

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}}">
   <ListBox.ItemTemplate>
     <DataTemplate>
       <StackPanel>
         <TextBlock Text="{Binding Path=TaskName}" />
         <TextBlock Text="{Binding Path=Description}"/>
         <TextBlock Text="{Binding Path=Priority}"/>
       </StackPanel>
     </DataTemplate>
   </ListBox.ItemTemplate>
 </ListBox>

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

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

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.

Remarks

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.

Constructors

DataTemplate()

Initializes a new instance of the DataTemplate class.

DataTemplate(Object)

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

Properties

DataTemplateKey

Gets the default key of the DataTemplate.

DataType

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

Triggers

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

Methods

ValidateTemplatedParent(FrameworkElement)

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