Compartir a través de


ItemsControl.ItemTemplateSelector Propiedad

Definición

Obtiene o establece la lógica personalizada para elegir una plantilla que se usa para mostrar cada elemento.

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 propiedad

Objeto DataTemplateSelector personalizado que proporciona lógica y devuelve una DataTemplate. De manera predeterminada, es null.

Atributos

Ejemplos

En el ejemplo siguiente, el auctionItemDataTemplateSelector nombre del recurso (correspondiente a una AuctionItemDataTemplateSelector clase) se asigna a la ItemTemplateSelector propiedad de ItemsControl.

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

En el ejemplo siguiente se muestra la implementación de la AuctionItemDataTemplateSelector clase con una invalidación del 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

En este caso, dentro del SelectTemplate método de la clase , hay lógica para devolver la plantilla adecuada en función del valor de la SpecialFeatures propiedad del item objeto pasado. La plantilla que se devuelve se encuentra en los recursos del elemento envolvente Window.

Cuando se establece la ItemTemplateSelector propiedad , ItemsControl se dirige a para llamar automáticamente al SelectTemplate método de AuctionItemDataTemplateSelector para cada uno de los elementos de la colección a la ItemsControl que está enlazado. La llamada pasa el elemento de datos como un objeto . El DataTemplate que devuelve el método se usa para mostrar ese elemento de datos.

Para obtener otro ejemplo, consulte Información general sobre plantillas de datos.

Comentarios

ItemTemplate Use para especificar la visualización de los objetos de datos. Si tiene más de una plantilla definida y desea proporcionar lógica para devolver una plantilla que se va a usar, use esta propiedad. Tenga en cuenta que esta propiedad se omite si ItemTemplate se establece.

proporciona ItemsControl una gran flexibilidad para la personalización visual y proporciona muchas propiedades de estilo y plantillas. Utilice la ItemContainerStyle propiedad o la ItemContainerStyleSelector propiedad para establecer un estilo para afectar a la apariencia de los elementos que contienen los elementos de datos. Por ejemplo, para ListBox, los contenedores generados son ListBoxItem controles; para ComboBox, son ComboBoxItem controles. Para afectar al diseño de los elementos, use la ItemsPanel propiedad . Si usa la agrupación en el control, puede usar la GroupStyle propiedad o GroupStyleSelector .

Para más información, consulte Información general sobre plantillas de datos.

Uso de atributos XAML

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>

Valores XAML

ResourceExtension Uno de los siguientes: StaticResource, o DynamicResource. A menos que los propios estilos contengan referencias a posibles referencias en tiempo de ejecución, como recursos del sistema o preferencias de usuario, StaticResource normalmente se recomienda hacer referencia a un estilo para el rendimiento.

SelectorResourceKeyx:Key valor de cadena que hace referencia al selector que se solicita como un recurso.

Información sobre propiedades de dependencia

Campo identificador ItemTemplateSelectorProperty
Propiedades de metadatos establecidas en true None

Se aplica a

Consulte también