ItemsControl.ItemTemplateSelector Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |