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 свойства объект направляется на автоматический вызов SelectTemplate метода AuctionItemDataTemplateSelector для каждого из элементов в коллекции, ItemsControl к которой ItemsControl привязан объект . Вызов передает элемент данных в виде объекта . Объект , DataTemplate возвращаемый методом , затем используется для отображения этого элемента данных.

Другой пример см. в статье Общие сведения о шаблонах данных.

Комментарии

Для указания визуализации объектов данных используется ItemTemplate . Если вы определили несколько шаблонов и хотите предоставить логику для возврата шаблона для использования, используйте это свойство. Обратите внимание, что это свойство игнорируется, если ItemTemplate задано значение .

обеспечивает ItemsControl большую гибкость для настройки визуальных элементов и предоставляет множество свойств стилей и шаблонов. ItemContainerStyle Используйте свойство или свойство , ItemContainerStyleSelector чтобы задать стиль, который влияет на внешний вид элементов, содержащих элементы данных. Например, для ListBoxсозданные контейнеры являются ListBoxItem элементами управления; для ComboBox— элементами ComboBoxItem управления. Чтобы повлиять на макет элементов, используйте ItemsPanel свойство . Если вы используете группирование в элементе управления, можно использовать GroupStyle свойство или GroupStyleSelector .

Дополнительные сведения см. в статье Общие сведения о шаблонах данных.

Использование атрибута XAML

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>

Значения XAML

ResourceExtension Один из следующих вариантов: StaticResource, или DynamicResource. Если сами стили не содержат ссылки на потенциальные ссылки во время выполнения, такие как системные ресурсы или пользовательские предпочтения, StaticResource для повышения производительности обычно рекомендуется ссылаться на стиль.

SelectorResourceKeyx:Key строковое значение, ссылающееся на селектор, запрашиваемый в качестве ресурса.

Сведения о свойстве зависимостей

Поле идентификатора ItemTemplateSelectorProperty
Для свойств метаданных задано значение true Нет

Применяется к

См. также раздел