Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source

DataTemplateSelector.SelectTemplate, méthode

En cas de substitution dans une classe dérivée, retourne un DataTemplate en fonction d'une logique personnalisée.

Espace de noms :  System.Windows.Controls
Assembly :  PresentationFramework (dans PresentationFramework.dll)

public virtual DataTemplate SelectTemplate(
	Object item,
	DependencyObject container
)

Paramètres

item
Type : System.Object
Objet de données pour lequel le modèle est sélectionné.
container
Type : System.Windows.DependencyObject
Objet lié aux données.

Valeur de retour

Type : System.Windows.DataTemplate
Retourne un modèle DataTemplate ou une valeur null. La valeur par défaut est null.

D'une manière générale, vous utilisez un sélecteur de modèle si vous avez plusieurs modèles de données définis pour un même type d'objets. Par exemple, si votre source de liaison est une liste d'objets Student et si vous souhaitez appliquer un modèle particulier aux stagiaires à temps partiel. Pour ce faire, vous pouvez créer une classe héritant de DataTemplateSelector et substituant la méthode SelectTemplate. Après avoir défini votre classe, vous pouvez assigner une instance de celle-ci à la propriété du sélecteur de modèle de votre élément.

Dans cet exemple, la source de liaison est une liste d'objets Task. L'une des propriétés d'un objet Task est Priority. Deux modèles de données sont définis : myTaskTemplate et importantTaskTemplate.

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


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;
        }
    }
}


Vous pouvez ensuite déclarer TaskListDataTemplateSelector en tant que ressource :


<Window.Resources>


...


<local:TaskListDataTemplateSelector x:Key="myDataTemplateSelector"/>


...


</Window.Resources>


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


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


Pour obtenir l'exemple complet, consultez la rubrique Introduction aux modèles de données, exemple.

.NET Framework

Pris en charge dans : 4, 3.5, 3.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft