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.

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 d’objets Task . L’une des propriétés d’un Task objet est Priority. Deux modèles de données sont définis, myTaskTemplate et importantTaskTemplate.

Pour fournir une logique à choisir DataTemplate en fonction de la valeur de l’objet Priority de données, créez une sous-classe de DataTemplateSelector et remplacez la SelectTemplate méthode . Dans l’exemple suivant, la méthode fournit une SelectTemplate logique pour retourner le modèle approprié en fonction de la valeur de la Priority propriété . Le modèle à retourner se trouve dans les ressources de l’élément enveloppant Window .

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 :

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

Pour utiliser la ressource de sélecteur de modèle, affectez-la à la ItemTemplateSelector propriété du ListBox. appelle ListBox la SelectTemplate méthode du TaskListDataTemplateSelector pour chacun des éléments de la collection sous-jacente. L’appel passe l’objet de données en paramètre d’élément. Le DataTemplate retourné par la méthode est ensuite appliqué à cet objet de données.

<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.

Remarques

En règle générale, vous créez un DataTemplateSelector lorsque vous en avez plusieurs DataTemplate pour le même type d’objets et que vous souhaitez fournir votre propre logique pour choisir un DataTemplate à appliquer en fonction des propriétés de chaque objet de données. Notez que si vous avez des objets de types différents, vous pouvez définir la DataType propriété sur le DataTemplate. Si vous procédez ainsi, il n’est pas nécessaire de créer un DataTemplateSelector. En outre, si vous avez des objets du même type mais avec des propriétés différentes, vous pouvez également envisager d’utiliser un DataTrigger convertisseur de données ou . Pour plus d’informations, consultez Vue d’ensemble de la création de modèles de données.

Pour créer un sélecteur de modèle, créez une classe qui hérite de DataTemplateSelector et remplace la SelectTemplate méthode . Une fois votre classe définie, vous pouvez affecter une instance de la classe à la propriété de sélecteur de modèle de votre élément.

Constructeurs

DataTemplateSelector()

Initialise une nouvelle instance de la classe DataTemplateSelector.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(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.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à