ItemsControl.ItemTemplateSelector ItemsControl.ItemTemplateSelector ItemsControl.ItemTemplateSelector ItemsControl.ItemTemplateSelector Property

Definición

Obtiene o establece la lógica personalizada para elegir una plantilla que se utiliza para mostrar cada elemento.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 de propiedad

Un objeto DataTemplateSelector personalizado que proporciona la lógica y devuelve una DataTemplate.A custom DataTemplateSelector object that provides logic and returns a DataTemplate. De manera predeterminada, es null.The default is null.

Ejemplos

En el ejemplo siguiente, la auctionItemDataTemplateSelector nombre de recurso (correspondiente a un AuctionItemDataTemplateSelector clase) se asigna a la ItemTemplateSelector propiedad de la 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>

El ejemplo siguiente muestra la implementación de la AuctionItemDataTemplateSelector clase con una invalidación de la SelectTemplate método: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

En este caso, dentro de la SelectTemplate método de la clase, no hay lógica para devolver la plantilla adecuada en función del valor de la SpecialFeatures propiedad de la item objeto pasado.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. La plantilla que se devuelve se encuentra en los recursos de la envoltura Window elemento.The template to return is found in the resources of the enveloping Window element.

Al establecer el ItemTemplateSelector propiedad, el ItemsControl se dirige a llaman automáticamente a la SelectTemplate método AuctionItemDataTemplateSelector para cada uno de los elementos de la colección a la que el ItemsControl está enlazado.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. La llamada pasa el elemento de datos como un objeto.The call passes the data item as an object. El DataTemplate devuelta por el método, a continuación, se usa para mostrar ese elemento de datos.The DataTemplate that is returned by the method is then used to display that data item.

Para obtener otro ejemplo, vea Data Templating Overview.For another example, see Data Templating Overview.

Comentarios

Usa el ItemTemplate para especificar la visualización de los objetos de datos.You use the ItemTemplate to specify the visualization of the data objects. Si tiene más de una plantilla definida y desea proporcionar lógica para devolver una plantilla para utilizarla, utilice esta propiedad.If you have more than one template defined and want to supply logic to return a template to use, then you use this property. Tenga en cuenta que esta propiedad se omite si ItemTemplate está establecido.Note that this property is ignored if ItemTemplate is set.

El ItemsControl proporciona gran flexibilidad para la personalización visual y proporciona muchas propiedades aplicar estilos y plantillas.The ItemsControl provides great flexibility for visual customization and provides many styling and templating properties. Use la ItemContainerStyle propiedad o el ItemContainerStyleSelector propiedad para establecer un estilo que afectan a la apariencia de los elementos que contienen los elementos de datos.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 ejemplo, para ListBox, los contenedores generados son ListBoxItem controla; para ComboBox, son ComboBoxItem controles.For example, for ListBox, the generated containers are ListBoxItem controls; for ComboBox, they are ComboBoxItem controls. Para afectar al diseño de los elementos, utilice el ItemsPanel propiedad.To affect the layout of the items, use the ItemsPanel property. Si se utiliza la agrupación en el control, puede usar el GroupStyle o GroupStyleSelector propiedad.If you are using grouping on your control, you can use the GroupStyle or GroupStyleSelector property.

Para obtener más información, consulte Información general sobre plantillas de datos.For more information, see Data Templating Overview.

Uso de atributos XAMLXAML Attribute Usage

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>  

Valores XAMLXAML Values

ResourceExtensionResourceExtension
Uno de los siguientes: StaticResource, o DynamicResource.One of the following: StaticResource, or DynamicResource. A menos que los estilos contengan referencias a posibles referencias de tiempo de ejecución, como los recursos del sistema o las preferencias del usuario StaticResource referencia a un estilo general, se recomienda para el rendimiento.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 de cadena que hace referencia al selector de que se solicita como un recurso.x:Key string value referring to the selector being requested as a resource.

Información sobre propiedades de dependenciaDependency Property Information

Campo de identificadorIdentifier field ItemTemplateSelectorProperty
Establecen las propiedades de metadatos en trueMetadata properties set to true NoneNone

Se aplica a

Consulte también: