ItemsControl.ItemTemplateSelector Propriedade

Definição

Obtém ou define a lógica personalizada para escolher um modelo usado para exibir cada 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; }
[<System.ComponentModel.Bindable(true)>]
member this.ItemTemplateSelector : System.Windows.Controls.DataTemplateSelector with get, set
Public Property ItemTemplateSelector As DataTemplateSelector

Valor de Propriedade

Um objeto personalizado DataTemplateSelector que fornece lógica e devolve um DataTemplate. A predefinição é null.

Atributos

Exemplos

No exemplo seguinte, o nome do auctionItemDataTemplateSelector recurso (correspondente a uma AuctionItemDataTemplateSelector classe) é atribuído à ItemTemplateSelector propriedade do ItemsControl.

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

O exemplo seguinte mostra a implementação da AuctionItemDataTemplateSelector classe com uma sobreposição do SelectTemplate método:

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

Neste caso, dentro do SelectTemplate método da classe, há lógica para devolver o template apropriado com base no valor da SpecialFeatures propriedade do item objeto passado. O modelo a ser retornado é encontrado nos recursos do elemento envolvente Window .

Quando defines a ItemTemplateSelector propriedade, o ItemsControl é direcionado para chamar automaticamente o SelectTemplate método de AuctionItemDataTemplateSelector para cada um dos itens da coleção à qual o ItemsControl está vinculado. A chamada passa o item de dados como um objeto. O DataTemplate que é devolvido pelo método é então usado para mostrar esse elemento de dados.

Para outro exemplo, veja Visão Geral da Modelação de Dados.

Observações

Usas o ItemTemplate para especificar a visualização dos objetos de dados. Se tiver mais do que um modelo definido e quiser fornecer lógica para devolver um modelo para usar, então usa esta propriedade. Note que esta propriedade é ignorada se ItemTemplate for definido.

Oferece ItemsControl grande flexibilidade para personalização visual e oferece muitas propriedades de estilo e modelagem. Use a ItemContainerStyle propriedade ou a ItemContainerStyleSelector propriedade para definir um estilo que afete a aparência dos elementos que contêm os itens de dados. Por exemplo, para ListBox, os contentores gerados são ListBoxItem controlos; para ComboBox, são ComboBoxItem controlos. Para influenciar a disposição dos itens, use a ItemsPanel propriedade. Se estiveres a usar agrupamento no teu controlo, podes usar a GroupStyle propriedade ou.GroupStyleSelector

Para mais informações, consulte Visão Geral da Templação de Dados.

Uso de atributos XAML

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>

Valores XAML

ResourceExtension Um dos seguintes: StaticResource, ou DynamicResource. A menos que os próprios estilos contenham referências a potenciais referências em tempo de execução, como recursos do sistema ou preferências do utilizador, StaticResource a referência a um estilo é geralmente recomendada para desempenho.

SelectorResourceKeyx:Key valor de string referindo-se ao seletor solicitado como recurso.

Informação de Propriedade de Dependência

Iteme Value
Campo identificador ItemTemplateSelectorProperty
Propriedades dos metadados definidas como true None

Aplica-se a

Ver também