ItemsControl.ItemTemplateSelector 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置用于选择用来显示每个项的模板的自定义逻辑。
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 会定向为 集合中ItemsControl绑定到的每个项自动调用 SelectTemplate 的 方法AuctionItemDataTemplateSelector
。 调用将数据项作为 对象传递。
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 |
无 |