ItemsControl.ItemTemplateSelector Propriedade

Definição

Obtém ou define a lógica personalizada para escolher um modelo usado para exibir cada item.Gets or sets the custom logic for choosing a template used to display each item.

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; }
member this.ItemTemplateSelector : System.Windows.Controls.DataTemplateSelector with get, set
Public Property ItemTemplateSelector As DataTemplateSelector

Valor da propriedade

Um objeto personalizado DataTemplateSelector que fornece lógica e retorna um DataTemplate.A custom DataTemplateSelector object that provides logic and returns a DataTemplate. O padrão é null.The default is null.

Atributos

Exemplos

No exemplo a seguir, o nome do recurso de auctionItemDataTemplateSelector (correspondente a uma classe AuctionItemDataTemplateSelector) é atribuído à propriedade ItemTemplateSelector do ItemsControl.In the following example, the auctionItemDataTemplateSelector resource name (corresponding to an AuctionItemDataTemplateSelector class) is assigned to the ItemTemplateSelector property of the ItemsControl.

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

O exemplo a seguir mostra a implementação da classe AuctionItemDataTemplateSelector com uma substituição do método SelectTemplate:The following example shows the implementation of the AuctionItemDataTemplateSelector class with an override of the SelectTemplate method:

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

Nesse caso, dentro do método SelectTemplate da classe, há uma lógica para retornar o modelo apropriado com base no valor da propriedade SpecialFeatures do objeto item passado.In this case, within the SelectTemplate method of the class, there is logic to return the appropriate template based on the value of the SpecialFeatures property of the item object passed. O modelo a ser retornado é encontrado nos recursos do elemento de Window enveloping.The template to return is found in the resources of the enveloping Window element.

Quando você define a propriedade ItemTemplateSelector, o ItemsControl é direcionado para chamar automaticamente o método SelectTemplate de AuctionItemDataTemplateSelector para cada um dos itens da coleção à qual o ItemsControl está associado.When you set the ItemTemplateSelector property, the ItemsControl is directed to automatically call the SelectTemplate method of AuctionItemDataTemplateSelector for each of the items in the collection to which the ItemsControl is bound. A chamada passa o item de dados como um objeto.The call passes the data item as an object. O DataTemplate retornado pelo método é usado para exibir esse item de dados.The DataTemplate that is returned by the method is then used to display that data item.

Para obter outro exemplo, consulte visão geral de modelagem de dados.For another example, see Data Templating Overview.

Comentários

Você usa o ItemTemplate para especificar a visualização dos objetos de dados.You use the ItemTemplate to specify the visualization of the data objects. Se você tiver mais de um modelo definido e desejar fornecer lógica para retornar um modelo a ser usado, use essa propriedade.If you have more than one template defined and want to supply logic to return a template to use, then you use this property. Observe que essa propriedade será ignorada se ItemTemplate estiver definida.Note that this property is ignored if ItemTemplate is set.

O ItemsControl fornece grande flexibilidade para a personalização visual e fornece muitas propriedades de estilo e modelagem.The ItemsControl provides great flexibility for visual customization and provides many styling and templating properties. Use a propriedade ItemContainerStyle ou a propriedade ItemContainerStyleSelector para definir um estilo para afetar a aparência dos elementos que contêm os itens de dados.Use the ItemContainerStyle property or the ItemContainerStyleSelector property to set a style to affect the appearance of the elements that contain the data items. Por exemplo, para ListBox, os contêineres gerados são controles de ListBoxItem; por ComboBox, eles são ComboBoxItem controles.For example, for ListBox, the generated containers are ListBoxItem controls; for ComboBox, they are ComboBoxItem controls. Para afetar o layout dos itens, use a propriedade ItemsPanel.To affect the layout of the items, use the ItemsPanel property. Se você estiver usando o agrupamento em seu controle, poderá usar a propriedade GroupStyle ou GroupStyleSelector.If you are using grouping on your control, you can use the GroupStyle or GroupStyleSelector property.

Para obter mais informações, consulte Visão geral de modelagem de dados.For more information, see Data Templating Overview.

Uso do Atributo XAMLXAML Attribute Usage

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>  

Valores XAMLXAML Values

ResourceExtensionResourceExtension
Um dos seguintes: StaticResourceou DynamicResource.One of the following: StaticResource, or DynamicResource. A menos que os próprios estilos contenham referências a possíveis referências de tempo de execução, como recursos do sistema ou preferências do usuário, StaticResource referência a um estilo é geralmente recomendada para o desempenho.Unless the styles themselves contain references to potential run-time references such as system resources or user preferences, StaticResource reference to a style is usually recommended for performance.

SelectorResourceKeySelectorResourceKey
x:Key valor da cadeia de caracteres referindo-se ao seletor que está sendo solicitado como um recurso.x:Key string value referring to the selector being requested as a resource.

Informações de Propriedade de DependênciaDependency Property Information

Campo de identificadorIdentifier field ItemTemplateSelectorProperty
Propriedades de metadados definidas como trueMetadata properties set to true NenhumNone

Aplica-se a

Veja também