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 классу ItemTemplateSelector ) присваивается свойству ItemsControl.

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

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

Комментарии

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

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

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

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

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>  

Значения XAML

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

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

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

Поле идентификатора ItemTemplateSelectorProperty
Metadata properties set to true Нет

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

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