DataTemplateSelector Classe

Définition

Fournit un moyen de choisir un DataTemplate en fonction de l’objet de données et de l’élément lié aux données.Provides a way to choose a DataTemplate based on the data object and the data-bound element.

public ref class DataTemplateSelector
public class DataTemplateSelector
type DataTemplateSelector = class
Public Class DataTemplateSelector
Héritage
DataTemplateSelector

Exemples

Dans cet exemple, la source de liaison est une liste Task d’objets.In this example, the binding source is a list of Task objects. L’une des propriétés d’un Task objet est Priority.One of the properties of a Task object is Priority. Deux modèles de données sont définis, myTaskTemplate et importantTaskTemplate.There are two data templates defined, myTaskTemplate and importantTaskTemplate.

Pour fournir une logique permettant de DataTemplate choisir celle qui doit être Priority utilisée en fonction de la valeur de l’objet de données DataTemplateSelector , créez une sous SelectTemplate -classe de et substituez la méthode.To supply logic to choose which DataTemplate to use based on the Priority value of the data object, create a subclass of DataTemplateSelector and override the SelectTemplate method. Dans l’exemple suivant, la SelectTemplate méthode fournit une logique pour retourner le modèle approprié en fonction de la valeur Priority de la propriété.In the following example, the SelectTemplate method provides logic to return the appropriate template based on the value of the Priority property. Le modèle à retourner se trouve dans les ressources de l' Window élément enveloppant.The template to return is found in the resources of the enveloping Window element.

using System.Windows;
using System.Windows.Controls;

namespace SDKSample
{
    public class TaskListDataTemplateSelector : DataTemplateSelector
    {
        public override DataTemplate
            SelectTemplate(object item, DependencyObject container)
        {
            FrameworkElement element = container as FrameworkElement;

            if (element != null && item != null && item is Task)
            {
                Task taskitem = item as Task;

                if (taskitem.Priority == 1)
                    return
                        element.FindResource("importantTaskTemplate") as DataTemplate;
                else
                    return
                        element.FindResource("myTaskTemplate") as DataTemplate;
            }

            return null;
        }
    }
}

Namespace SDKSample
    Public Class TaskListDataTemplateSelector
        Inherits DataTemplateSelector
        Public Overrides Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject) As DataTemplate

            Dim element As FrameworkElement
            element = TryCast(container, FrameworkElement)

            If element IsNot Nothing AndAlso item IsNot Nothing AndAlso TypeOf item Is Task Then

                Dim taskitem As Task = TryCast(item, Task)

                If taskitem.Priority = 1 Then
                    Return TryCast(element.FindResource("importantTaskTemplate"), DataTemplate)
                Else
                    Return TryCast(element.FindResource("myTaskTemplate"), DataTemplate)
                End If
            End If

            Return Nothing
        End Function
    End Class
End Namespace

On peut ensuite déclarer le TaskListDataTemplateSelector comme ressource :We can then declare the TaskListDataTemplateSelector as a resource:

<Window.Resources>
<local:TaskListDataTemplateSelector x:Key="myDataTemplateSelector"/>
</Window.Resources>

Pour utiliser la ressource du sélecteur de modèle, assignez-la ListBoxà la ItemTemplateSelector propriété de.To use the template selector resource, assign it to the ItemTemplateSelector property of the ListBox. Appelle la SelectTemplate méthode deTaskListDataTemplateSelector pour chacun des éléments de la collection sous-jacente. ListBoxThe ListBox calls the SelectTemplate method of the TaskListDataTemplateSelector for each of the items in the underlying collection. L’appel passe l’objet de données en paramètre d’élément.The call passes the data object as the item parameter. Le DataTemplate retourné par la méthode est ensuite appliqué à cet objet de données.The DataTemplate that is returned by the method is then applied to that data object.

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}"
         ItemTemplateSelector="{StaticResource myDataTemplateSelector}"
         HorizontalContentAlignment="Stretch"/>

Vous trouverez l’exemple complet sur la page Présentation d’un exemple de création de modèles de données.For the complete sample, see Introduction to Data Templating Sample.

Remarques

En général, vous créez DataTemplateSelector un lorsque vous en avez plusieurs DataTemplate pour le même type d’objets et vous souhaitez fournir votre propre logique pour choisir un DataTemplate à appliquer en fonction des propriétés de chaque objet de données.Typically, you create a DataTemplateSelector when you have more than one DataTemplate for the same type of objects and you want to supply your own logic to choose a DataTemplate to apply based on the properties of each data object. Notez que si vous avez des objets de types différents, vous pouvez DataType définir la propriété DataTemplatesur le.Note that if you have objects of different types you can set the DataType property on the DataTemplate. Dans ce cas, il n’est pas nécessaire de créer un DataTemplateSelector.If you do that then there is no need to create a DataTemplateSelector. En outre, si vous avez des objets du même type mais avec des propriétés différentes, vous pouvez également envisager DataTrigger d’utiliser un ou un convertisseur de données.Furthermore, if you have objects of the same type but with different properties, you can also consider using a DataTrigger or a data converter. Pour plus d’informations, consultez Vue d’ensemble des modèles de données.For more information, see Data Templating Overview.

Pour créer un sélecteur de modèle, créez une classe qui hérite DataTemplateSelector de et substituez SelectTemplate la méthode.To create a template selector, create a class that inherits from DataTemplateSelector and override the SelectTemplate method. Une fois votre classe définie, vous pouvez assigner une instance de la classe à la propriété du sélecteur de modèle de votre élément.Once your class is defined you can assign an instance of the class to the template selector property of your element.

Constructeurs

DataTemplateSelector()

Initialise une nouvelle instance de la classe DataTemplateSelector.Initializes a new instance of the DataTemplateSelector class.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
SelectTemplate(Object, DependencyObject)

En cas de substitution dans une classe dérivée, retourne un DataTemplate basé sur la logique personnalisée.When overridden in a derived class, returns a DataTemplate based on custom logic.

ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Hérité de Object)

S’applique à