Esta documentación está archivada y no tiene mantenimiento.

ItemsControl.ItemTemplateSelector (Propiedad)

Actualización: noviembre 2007

Obtiene o establece la lógica personalizada para elegir una plantilla que se utiliza para mostrar cada elemento. Se trata de una propiedad de dependencia.

Espacio de nombres:  System.Windows.Controls
Ensamblado:  PresentationFramework (en PresentationFramework.dll)
XMLNS para XAML: http://schemas.microsoft.com/winfx/xaml/presentation

[BindableAttribute(true)]
public DataTemplateSelector ItemTemplateSelector { get; set; }
/** @property */
/** @attribute BindableAttribute(true) */
public DataTemplateSelector get_ItemTemplateSelector()
/** @property */
/** @attribute BindableAttribute(true) */
public  void set_ItemTemplateSelector(DataTemplateSelector value)

public function get ItemTemplateSelector () : DataTemplateSelector
public function set ItemTemplateSelector (value : DataTemplateSelector)
<object>
  <object.ItemTemplateSelector>
    <DataTemplateSelector .../>
  </object.ItemTemplateSelector>
</object>
<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>
ResourceExtension
                    Uno de los siguientes: StaticResource o DynamicResource. A menos que los estilos contengan referencias a referencias potenciales del tiempo de ejecución, tales como recursos del sistema o preferencias del usuario, se recomienda en general hacer referencia StaticResource a un estilo para un mejor rendimiento.
                SelectorResourceKey
                    Valor de cadena x:Key que hace referencia al selector que se solicita como recurso.
                

Valor de propiedad

Tipo: System.Windows.Controls.DataTemplateSelector
Un objeto DataTemplateSelector personalizado que proporciona la lógica y devuelve una DataTemplate. El valor predeterminado es null.

Campo de identificador

ItemTemplateSelectorProperty

Propiedades de metadatos establecidas en true.

None

Utiliza ItemTemplate para especificar la visualización de los objetos de datos. Si tiene más de una plantilla definida y desea proporcionar la lógica para devolver una plantilla que se va a utilizar, entonces, utilice esta propiedad. Observe que se omite esta propiedad si se establece ItemTemplate.

ItemsControl proporciona gran flexibilidad para la personalización visual, así como muchas propiedades de estilo y creación de plantillas. Utilice la propiedad ItemContainerStyle o la propiedad ItemContainerStyleSelector para establecer un estilo que afecta al aspecto de los elementos que contienen los elementos de datos. Por ejemplo, para ListBox, los contenedores generados son controles ListBoxItem; para ComboBox, son controles ComboBoxItem. Para afectar al diseño de los elementos, utilice la propiedad ItemsPanel. Si utiliza la agrupación en el control, puede utilizar la propiedad GroupStyle o GroupStyleSelector.

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

En el ejemplo siguiente, se asigna el nombre del recurso auctionItemDataTemplateSelector (correspondiente a una clase AuctionItemDataTemplateSelector) a la propiedad ItemTemplateSelector 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 clase AuctionItemDataTemplateSelector con una invalidación del método SelectTemplate.

using System.Windows;
using System.Windows.Controls;

namespace SDKSample
{
    public class AuctionItemDataTemplateSelector : DataTemplateSelector
    {
        public override DataTemplate 
            SelectTemplate(object item, DependencyObject container)
        {
            if (item != null && item is AuctionItem)
            {
                AuctionItem auctionItem = item as AuctionItem;
                Window window = Application.Current.MainWindow;

                switch (auctionItem.SpecialFeatures)
                {
                    case SpecialFeatures.None:
                        return 
                            window.FindResource("AuctionItem_None") 
                            as DataTemplate;
                    case SpecialFeatures.Color:
                        return 
                            window.FindResource("AuctionItem_Color") 
                            as DataTemplate;
                }
            }

            return null;
        }
    }
}


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

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

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

Windows Vista

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0
Mostrar: