ItemsControl.ItemTemplateSelector Свойство

Определение

Возвращает или задает пользовательскую логику для выбора шаблона, используемого для отображения каждого элемента.Gets or sets the custom logic for choosing a template used to display each item.

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; }
member this.ItemTemplateSelector : System.Windows.Controls.DataTemplateSelector with get, set
Public Property ItemTemplateSelector As DataTemplateSelector

Значение свойства

Пользовательский объект DataTemplateSelector , который предоставляет логику и возвращает DataTemplate.A custom DataTemplateSelector object that provides logic and returns a DataTemplate. Значение по умолчанию — null.The default is null.

Атрибуты

Примеры

В следующем примере auctionItemDataTemplateSelector имя ресурса (соответствующее AuctionItemDataTemplateSelector классу ItemTemplateSelector ) назначается свойству объекта ItemsControl.In the following example, the auctionItemDataTemplateSelector resource name (corresponding to an AuctionItemDataTemplateSelector class) is assigned to the ItemTemplateSelector property of the ItemsControl.

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

В следующем примере показана реализация AuctionItemDataTemplateSelector класса с переопределением SelectTemplate метода:The following example shows the implementation of the AuctionItemDataTemplateSelector class with an override of the SelectTemplate method:

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 переданного объекта.In this case, within the SelectTemplate method of the class, there is logic to return the appropriate template based on the value of the SpecialFeatures property of the item object passed. Возвращаемый шаблон находится в ресурсах элемента запечатывание Window .The template to return is found in the resources of the enveloping Window element.

ItemTemplateSelector При задании ItemsControl свойства ItemsControl AuctionItemDataTemplateSelector направляется для автоматического вызова методадлякаждогоизэлементоввколлекции,ккоторойпривязанобъект.SelectTemplateWhen you set the ItemTemplateSelector property, the ItemsControl is directed to automatically call the SelectTemplate method of AuctionItemDataTemplateSelector for each of the items in the collection to which the ItemsControl is bound. Вызов передает элемент данных в виде объекта.The call passes the data item as an object. Объект DataTemplate , возвращаемый методом, используется для вывода этого элемента данных.The DataTemplate that is returned by the method is then used to display that data item.

Другой пример см. в разделе Общие сведения о шаблонах данных.For another example, see Data Templating Overview.

Комментарии

Используйте ItemTemplate для указания визуализации объектов данных.You use the ItemTemplate to specify the visualization of the data objects. Если вы определили несколько шаблонов и хотите предоставить логику для возврата шаблона, используйте это свойство.If you have more than one template defined and want to supply logic to return a template to use, then you use this property. Обратите внимание, что это свойство ItemTemplate игнорируется, если задано значение.Note that this property is ignored if ItemTemplate is set.

ItemsControl Предоставляет большую гибкость для визуальной настройки и предоставляет множество свойств стилизации и шаблонов.The ItemsControl provides great flexibility for visual customization and provides many styling and templating properties. ItemContainerStyle Используйте свойствоItemContainerStyleSelector или свойство, чтобы задать стиль для изменения внешнего вида элементов, содержащих элементы данных.Use the ItemContainerStyle property or the ItemContainerStyleSelector property to set a style to affect the appearance of the elements that contain the data items. Например, для ListBoxсозданные контейнеры — ListBoxItem это элементы управления. для ComboBox, они являются ComboBoxItem элементами управления.For example, for ListBox, the generated containers are ListBoxItem controls; for ComboBox, they are ComboBoxItem controls. Чтобы изменить макет элементов, используйте ItemsPanel свойство.To affect the layout of the items, use the ItemsPanel property. Если вы используете группирование в элементе управления, можно использовать GroupStyle свойство или. GroupStyleSelectorIf you are using grouping on your control, you can use the GroupStyle or GroupStyleSelector property.

Более подробную информацию см. в разделе Общие сведения о шаблонах данных.For more information, see Data Templating Overview.

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

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>  

Значения XAMLXAML Values

ресаурцеекстенсионResourceExtension
Один из следующих элементов: StaticResourceили. DynamicResourceOne of the following: StaticResource, or DynamicResource. Если сами стили не содержат ссылок на потенциальные ссылки времени выполнения, такие как системные ресурсы или пользовательские настройки StaticResource , для повышения производительности обычно рекомендуется использовать ссылку на стиль.Unless the styles themselves contain references to potential run-time references such as system resources or user preferences, StaticResource reference to a style is usually recommended for performance.

селекторресаурцекэйSelectorResourceKey
x:KeyСтроковое значение, ссылающееся на селектор, запрашиваемый в качестве ресурса.x:Key string value referring to the selector being requested as a resource.

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

Поле идентификатораIdentifier field ItemTemplateSelectorProperty
Свойства метаданных, для которых задано значениеtrueMetadata properties set to true НетNone

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

Дополнительно