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é

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

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

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

Remarques

Vous utilisez pour ItemTemplate spécifier la visualisation des objets de données. Si vous avez défini plusieurs modèles et que vous 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 est défini.

Offre ItemsControl 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 afin d’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, ce 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 GroupStyle propriété ou GroupStyleSelector .

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 potentielles au moment de l’exécution, 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.

SelectorResourceKeyx: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 Identificateur ItemTemplateSelectorProperty
Propriétés de métadonnées définies sur true Aucun

S’applique à

Voir aussi