ItemsControl.ItemTemplateSelector Propriété

Définition

Obtient ou définit la logique personnalisée permettant de choisir un modèle utilisé pour afficher chaque élément.

public:
 property System::Windows::Controls::DataTemplateSelector ^ ItemTemplateSelector { System::Windows::Controls::DataTemplateSelector ^ get(); void set(System::Windows::Controls::DataTemplateSelector ^ value); };
[System.ComponentModel.Bindable(true)]
public System.Windows.Controls.DataTemplateSelector ItemTemplateSelector { get; set; }
[<System.ComponentModel.Bindable(true)>]
member this.ItemTemplateSelector : System.Windows.Controls.DataTemplateSelector with get, set
Public Property ItemTemplateSelector As DataTemplateSelector

Valeur de propriété

DataTemplateSelector

Objet DataTemplateSelector personnalisé qui fournit la logique et retourne un DataTemplate. La valeur par défaut est null.

Attributs

Exemples

Dans l’exemple suivant, le nom de la auctionItemDataTemplateSelector ressource (correspondant à une AuctionItemDataTemplateSelector classe) est affecté à la ItemTemplateSelector propriété du ItemsControl.

<ItemsControl 
   Template="{StaticResource ScrollTemplate}" 
   ItemsSource="{Binding Source={StaticResource items_list}}"
   ItemTemplateSelector="{StaticResource auctionItemDataTemplateSelector}" >
   <ItemsControl.ItemsPanel>
      <ItemsPanelTemplate>
         <StackPanel />
      </ItemsPanelTemplate>
   </ItemsControl.ItemsPanel>
</ItemsControl>

L’exemple suivant montre l’implémentation de la AuctionItemDataTemplateSelector classe avec un remplacement de la SelectTemplate méthode :

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

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

            if (element != null && item != null && item is AuctionItem)
            {
                AuctionItem auctionItem = item as AuctionItem;
                Window window = Application.Current.MainWindow;

                switch (auctionItem.SpecialFeatures)
                {
                    case SpecialFeatures.None:
                        return 
                            element.FindResource("AuctionItem_None") 
                            as DataTemplate;
                    case SpecialFeatures.Color:
                        return 
                            element.FindResource("AuctionItem_Color") 
                            as DataTemplate;
                }
            }

            return null;
        }
    }
}

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

            Dim element As FrameworkElement = TryCast(container, FrameworkElement)

            If element isnot Nothing andalso item IsNot Nothing AndAlso TypeOf item Is AuctionItem Then

                Dim auctionItem As AuctionItem = TryCast(item, AuctionItem)

                Select Case auctionItem.SpecialFeatures
                    Case SpecialFeatures.None
                        Return TryCast(element.FindResource("AuctionItem_None"), DataTemplate)
                    Case SpecialFeatures.Color
                        Return TryCast(element.FindResource("AuctionItem_Color"), DataTemplate)
                End Select
            End If

            Return Nothing
        End Function
    End Class
End Namespace

Dans ce cas, dans la SelectTemplate méthode de la classe, il existe une logique pour retourner le modèle approprié en fonction de la valeur de la SpecialFeatures propriété de l’objet item passé. Le modèle à retourner se trouve dans les ressources de l’élément d’envelpage Window .

Lorsque vous définissez la ItemTemplateSelector propriété, l’objet ItemsControl est dirigé pour appeler automatiquement la SelectTemplate méthode de chacun des AuctionItemDataTemplateSelector éléments de la collection auquel il ItemsControl est lié. L’appel transmet l’élément de données en tant qu’objet. L’élément DataTemplate retourné par la méthode est ensuite utilisé pour afficher cet élément de données.

Pour obtenir un autre exemple, consultez Vue d’ensemble de la création de modèles de données.

Remarques

Vous utilisez la ItemTemplate méthode pour spécifier la visualisation des objets de données. Si vous avez plusieurs modèles définis et souhaitez fournir une logique pour retourner un modèle à utiliser, vous utilisez cette propriété. Notez que cette propriété est ignorée si ItemTemplate elle est définie.

Le modèle ItemsControl offre une grande flexibilité pour la personnalisation visuelle et fournit de nombreuses propriétés de style et de création de modèles. Utilisez la ItemContainerStyle propriété ou la ItemContainerStyleSelector propriété pour définir un style pour affecter l’apparence des éléments qui contiennent les éléments de données. Par exemple, pour ListBox, les conteneurs générés sont ListBoxItem des contrôles ; pour ComboBox, ils sont ComboBoxItem des contrôles. Pour affecter la disposition des éléments, utilisez la ItemsPanel propriété. Si vous utilisez le regroupement sur votre contrôle, vous pouvez utiliser la ou GroupStyleSelector la GroupStyle propriété.

Pour plus d’informations, consultez Vue d’ensemble de la création de modèles de données.

Utilisation d'attributs XAML

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>  

Valeurs XAML

ResourceExtension
L’un des éléments suivants : StaticResource, ou DynamicResource. À moins que les styles eux-mêmes contiennent des références à des références au moment de l’exécution potentielles telles que des ressources système ou des préférences utilisateur, StaticResource la référence à un style est généralement recommandée pour les performances.

SelectorResourceKey
x:Key valeur de chaîne faisant référence au sélecteur demandé en tant que ressource.

Informations sur les propriétés de dépendance

Champ d’identificateur ItemTemplateSelectorProperty
Propriétés de métadonnées définies sur true Aucun

S’applique à

Voir aussi