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,根據傳遞之 對象的 屬性值item
,傳回適當的範本SpecialFeatures
。 要傳回的範本位於 enveloping Window 元素的資源中。
當您設定 ItemTemplateSelector 屬性時,會ItemsControl導向 至 針對所系結之集合ItemsControl中每個項目自動呼叫 SelectTemplate 的方法AuctionItemDataTemplateSelector
。 呼叫會將數據項傳遞為物件。
DataTemplate方法傳回的 ,接著會用來顯示該數據項。
如需其他範例,請參閱 數據範本化概觀。
備註
您可以使用 ItemTemplate 指定資料物件的視覺效果。 如果您有一個以上的範本已定義,而且想要提供邏輯來傳回要使用的範本,請使用此屬性。 請注意,如果 ItemTemplate 已設定,則會忽略這個屬性。
提供 ItemsControl 視覺自定義的絕佳彈性,並提供許多樣式和範本化屬性。 ItemContainerStyle使用屬性或 ItemContainerStyleSelector 屬性來設定樣式,以影響包含數據項的項目外觀。 例如,針對 ListBox,產生的容器是 ListBoxItem 控件;如果是 ComboBox,則為 ComboBoxItem 控件。 若要影響專案的版面配置,請使用 ItemsPanel 屬性。 如果您在控件上使用群組,則可以使用 GroupStyle 或 GroupStyleSelector 屬性。
如需詳細資訊,請參閱 數據範本化概觀。
XAML Attribute Usage
<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>
XAML 值
ResourceExtension 下列其中一項: StaticResource
、 或 DynamicResource
。 除非樣式本身包含可能運行時間參考的參考,例如系統資源或使用者喜好設定, StaticResource
否則通常建議參考樣式以達到效能。
SelectorResourceKeyx:Key
字串值,參考要作為資源要求的選取器。
相依性屬性資訊
標識元欄位 | ItemTemplateSelectorProperty |
設定為的元數據屬性 true |
無 |