Describes the visual structure of a data object.
Inheritance
- Object
- DependencyObject
- FrameworkTemplate
- DataTemplate
Syntax
<DataTemplate ...> templateContent </DataTemplate>
XAML Values
- templateContent
-
The tree of objects that defines this DataTemplate. The tree must have a single root element, and that root element can have zero or more child elements.
Attributes
- MarshalingBehaviorAttribute(Agile)
- ThreadingAttribute(Both)
- VersionAttribute(NTDDI_WIN8)
- WebHostHiddenAttribute()
Members
The DataTemplate class has these types of members:
Constructors
The DataTemplate class has these constructors.
| Constructor | Description |
|---|---|
| DataTemplate | Initializes a new instance of the DataTemplate class. |
Methods
The DataTemplate class has these methods. It also inherits methods from the Object class.
| Method | Description |
|---|---|
| ClearValue | Clears the local value of a dependency property. (Inherited from DependencyObject) |
| GetAnimationBaseValue | Returns any base value established for a dependency property, which would apply in cases where an animation is not active. (Inherited from DependencyObject) |
| GetValue | Returns the current effective value of a dependency property from a DependencyObject. (Inherited from DependencyObject) |
| LoadContent | Creates the UIElement objects in the DataTemplate. |
| ReadLocalValue | Returns the local value of a dependency property, if a local value is set. (Inherited from DependencyObject) |
| SetValue | Sets the local value of a dependency property on a DependencyObject. (Inherited from DependencyObject) |
Properties
The DataTemplate class has these properties.
| Property | Access type | Description |
|---|---|---|
| Read-only | Gets the CoreDispatcher that this object is associated with. (Inherited from DependencyObject) |
Remarks
You typically use a DataTemplate to specify the visual representation of your data. 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.
You can use data binding in a DataTemplate. For example, suppose that a ListBox is bound to a collection of Customer objects and has the ItemTemplate property set to a DataTemplate. When the ListBox is created, a ListBoxItem is created for each Customer in the collection, and the DataContext of the ListBoxItem is set to the appropriate customer. In other words, the DataContext of the first ListBoxItem is set to the first customer, the DataContext of the second ListBoxItem is set to the second customer, and so on. You can bind elements in the DataTemplate to properties of the Customer object.
You can also use a DataTemplate to share UIElement objects across multiple ContentControl objects. For example, suppose you need multiple buttons on your application to have the same graphic. You can create a DataTemplate that contains the graphic and use it as the ContentTemplate for the buttons.
You can place a DataTemplate as the direct child of an ItemTemplate property element in XAML. You can also define a DataTemplate as a resource and then reference the resource as the value of the ItemTemplate property. The XAML usage that defines the content for creating a data template is not exposed as a settable property. It is special behavior built into the XAML processing of a DataTemplate object element.
Examples
The following example uses a DataTemplate to display the items of a ListBox. In this example, the ListBox is bound to a collection of Customer objects. The DataTemplate contains TextBlock controls that bind to the FirstName, LastName, and Address properties. For more info on data binding, see Data binding overview.
<Grid> <Grid.Resources> <src:Customers x:Key="customers"/> </Grid.Resources> <ListBox ItemsSource="{StaticResource customers}" Width="350" Margin="0,5,0,10"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Padding="5,0,5,0" Text="{Binding FirstName}" /> <TextBlock Text="{Binding LastName}" /> <TextBlock Text=", " /> <TextBlock Text="{Binding Address}" /> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </Grid>
The following example shows the Customer class and the collection that the ListBox is bound to.
Public Class Customer Private _firstName As String Private _lastName As String Private _address As String Public Property FirstName() As String Get Return _firstName End Get Set(ByVal value As String) _firstName = value End Set End Property Public Property LastName() As String Get Return _lastName End Get Set(ByVal value As String) _lastName = value End Set End Property Public Property Address() As String Get Return _address End Get Set(ByVal value As String) _address = value End Set End Property Public Sub New(ByVal firstName As String, ByVal lastName As String, ByVal address As String) Me.FirstName = firstName Me.LastName = lastName Me.Address = address End Sub End Class Public Class Customers Inherits ObservableCollection(Of Customer) Public Sub New() Add(New Customer("Michael", "Anderberg", "12 North Third Street, Apartment 45")) Add(New Customer("Chris", "Ashton", "34 West Fifth Street, Apartment 67")) Add(New Customer("Cassie", "Hicks", "56 East Seventh Street, Apartment 89")) Add(New Customer("Guido", "Pica", "78 South Ninth Street, Apartment 10")) End Sub End Class
Requirements
|
Minimum supported client | Windows 8 [Windows Store apps only] |
|---|---|
|
Minimum supported server | Windows Server 2012 [Windows Store apps only] |
|
Namespace |
|
|
Metadata |
|
See also
- FrameworkTemplate
- ItemsControl.ItemTemplate
- ContentControl.ContentTemplate
- ResourceDictionary and StaticResource references
Build date: 1/31/2013