ItemsControl.ItemTemplateSelector Propriété
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.
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 |