DataTemplate.DataType Property

Microsoft Silverlight will reach end of support after October 2021. Learn more.

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

Namespace:  System.Windows
Assembly:  System.Windows (in System.Windows.dll)

Syntax

'Declaration
Public Property DataType As Type
public Type DataType { get; set; }

Property Value

Type: System.Type
The type of object to which this template is applied.

Exceptions

Exception Condition
ArgumentException

When setting this property, the specified value is not of type Type.

Remarks

This property is very similar to the TargetType property of the Style class. When you set this property to the data type without specifying an x:Key, the DataTemplate gets applied automatically to data objects of that type. Note that when you do that, the x:Key is set implicitly. Therefore, if you assign this DataTemplate an x:Key value, you are overriding the implicit x:Key and the DataTemplate would not be applied automatically.

The DataType property is particularly useful when you bind to collections that contain objects of different types, as shown in the example code.

Examples

The following Silverlight 5 code example demonstrates how to use this property to apply data templates to items in a list depending on their type. In this example, an employee list includes some employees who are managers. A ListBox uses the templates to render the regular employees in normal type and the managers in bold type.

<Grid x:Name="LayoutRoot" Background="White">

  <Grid.Resources>
    <local:EmployeeCollection x:Key="Employees">
      <local:Employee Name="Employee1"/>
      <local:Manager Name="Manager1"/>
      <local:Employee Name="Employee2"/>
      <local:Manager Name="Manager2"/>
    </local:EmployeeCollection>
  </Grid.Resources>

  <ListBox ItemsSource="{StaticResource Employees}">
    <ListBox.Resources>
      <DataTemplate DataType="local:Employee">
        <TextBlock Text="{Binding Name}"/>
      </DataTemplate>
      <DataTemplate DataType="local:Manager">
        <TextBlock FontWeight="Bold" Text="{Binding Name}"/>
      </DataTemplate>
    </ListBox.Resources>
  </ListBox>

</Grid>
Public Class Employee
    Public Property Name As String
End Class

Public Class Manager
    Inherits Employee
End Class

Public Class EmployeeCollection
    Inherits ObservableCollection(Of Employee)
End Class
public class Employee { public string Name { get; set; } }
public class Manager : Employee { }
public class EmployeeCollection : ObservableCollection<Employee> { }

Version Information

Silverlight

Supported in: 5

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.