ItemsControl.ItemTemplateSelector Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 |