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
классу 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 |
Нет |