DataTemplateSelector Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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) |