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 |
Нет |