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 da propriedade

Um objeto personalizado DataTemplateSelector que fornece lógica e retorna um DataTemplate. O padrão é null.

Atributos

Exemplos

No exemplo a seguir, 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 a seguir mostra a implementação da AuctionItemDataTemplateSelector classe com uma substituiçã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

Nesse caso, dentro do SelectTemplate método da classe , há lógica para retornar o modelo apropriado com base no valor da SpecialFeatures propriedade do item objeto passado. O modelo a ser retornado é encontrado nos recursos do elemento de codificação Window .

Quando você define a ItemTemplateSelector propriedade , o ItemsControl é direcionado para chamar automaticamente o SelectTemplate método de AuctionItemDataTemplateSelector para cada um dos itens na coleção ao qual o ItemsControl está associado. A chamada passa o item de dados como um objeto . O DataTemplate retornado pelo método é usado para exibir esse item de dados.

Para obter outro exemplo, consulte Visão geral da modelagem de dados.

Comentários

Use o ItemTemplate para especificar a visualização dos objetos de dados. Se você tiver mais de um modelo definido e quiser fornecer lógica para retornar um modelo a ser usado, use essa propriedade. Observe que essa propriedade será ignorada se ItemTemplate estiver definida.

O ItemsControl fornece grande flexibilidade para personalização visual e fornece muitas propriedades de modelagem e estilo. Use a ItemContainerStyle propriedade ou a ItemContainerStyleSelector propriedade para definir um estilo para afetar a aparência dos elementos que contêm os itens de dados. Por exemplo, para ListBox, os contêineres gerados são ListBoxItem controles; para ComboBox, eles são ComboBoxItem controles. Para afetar o layout dos itens, use a ItemsPanel propriedade . Se você estiver usando o agrupamento em seu controle, poderá usar a GroupStyle propriedade ou GroupStyleSelector .

Para obter mais informações, consulte Visão geral da modelagem de dados.

Uso do Atributo 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 possíveis referências em tempo de execução, como recursos do sistema ou preferências do usuário, StaticResource a referência a um estilo geralmente é recomendada para desempenho.

SelectorResourceKeyx:Key valor de cadeia de caracteres que se refere ao seletor que está sendo solicitado como um recurso.

Informações da propriedade de dependência

Campo Identificador ItemTemplateSelectorProperty
Propriedades de metadados definidas como true Nenhum

Aplica-se a

Confira também