ItemsControl.ItemTemplateSelector 属性

定义

获取或设置用于选择用来显示每个项的模板的自定义逻辑。

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

属性值

DataTemplateSelector

自定义 DataTemplateSelector 对象,它提供逻辑并返回 DataTemplate。 默认值为 null

属性

示例

在以下示例中, auctionItemDataTemplateSelector 资源名称 (对应于类 AuctionItemDataTemplateSelector) 分配给 ItemTemplateSelectorItemsControl属性。

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

以下示例演示了使用方法替代的 AuctionItemDataTemplateSelector 类的 SelectTemplate 实现:

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

在这种情况下,在类的方法中SelectTemplate,有逻辑根据传递的对象的属性item的值SpecialFeatures返回相应的模板。 要返回的模板位于 enveloping Window 元素的资源中。

设置ItemTemplateSelector属性时,ItemsControl会定向到该属性,以便自动为集合ItemsControl中绑定的每个项调用SelectTemplate方法AuctionItemDataTemplateSelector。 调用将数据项作为对象传递。 DataTemplate然后,该方法返回的用于显示该数据项。

有关另一个示例,请参阅 数据模板化概述

注解

可以使用指定 ItemTemplate 数据对象的可视化效果。 如果定义了多个模板,并且想要提供逻辑来返回要使用的模板,请使用此属性。 请注意,如果 ItemTemplate 已设置此属性,则忽略此属性。

ItemsControl 视觉自定义提供了极大的灵活性,并提供许多样式和模板化属性。 ItemContainerStyle使用属性或ItemContainerStyleSelector属性设置样式以影响包含数据项的元素的外观。 例如, ListBox生成的容器是 ListBoxItem 控件;对于 ComboBox,它们是 ComboBoxItem 控件。 若要影响项的布局,请使用 ItemsPanel 该属性。 如果在控件上使用分组,则可以使用 GroupStyleGroupStyleSelector 属性。

有关详细信息,请参阅 数据模板化概述

XAML 属性用法

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>  

XAML 值

ResourceExtension
下列项之一: StaticResourceDynamicResource。 除非样式本身包含对潜在运行时引用(如系统资源或用户首选项)的引用, StaticResource 否则通常建议对样式的引用,以便提高性能。

SelectorResourceKey
x:Key 引用作为资源请求的选择器的字符串值。

依赖项属性信息

标识符字段 ItemTemplateSelectorProperty
元数据属性设置为 true

适用于

另请参阅