Share via


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 对象,它提供逻辑并返回 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 ,有一 SpecialFeatures 个逻辑基于传递的 item 对象的 属性值返回相应的模板。 可以在封装 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 以下项之一: StaticResource、 或 DynamicResource。 除非样式本身包含对潜在运行时引用(如系统资源或用户首选项)的引用, StaticResource 否则为了提高性能,通常建议引用样式。

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

依赖项属性信息

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

适用于

另请参阅