ItemsControl.ItemTemplateSelector 屬性

定義

取得或設定選擇用來顯示每個項目範本的自訂邏輯。

C#
[System.ComponentModel.Bindable(true)]
public System.Windows.Controls.DataTemplateSelector ItemTemplateSelector { get; set; }

屬性值

自訂 DataTemplateSelector 物件提供邏輯並傳回 DataTemplate。 預設為 null

屬性

範例

在下列範例中,資源 auctionItemDataTemplateSelector 名稱 (對應至 AuctionItemDataTemplateSelector 類別) 指派給 ItemTemplateSelectorItemsControl屬性。

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

下列範例示範 使用 方法的AuctionItemDataTemplateSelectorSelectTemplate覆寫來實作 類別:

C#
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;
        }
    }
}

在此情況下,在類別的方法內SelectTemplate,根據傳遞之 對象的 屬性值item,傳回適當的範本SpecialFeatures。 要傳回的範本位於 enveloping Window 元素的資源中。

當您設定 ItemTemplateSelector 屬性時,會ItemsControl導向 至 針對所系結之集合ItemsControl中每個項目自動呼叫 SelectTemplate 的方法AuctionItemDataTemplateSelector。 呼叫會將數據項傳遞為物件。 DataTemplate方法傳回的 ,接著會用來顯示該數據項。

如需其他範例,請參閱 數據範本化概觀

備註

您可以使用 ItemTemplate 指定資料物件的視覺效果。 如果您有一個以上的範本已定義,而且想要提供邏輯來傳回要使用的範本,請使用此屬性。 請注意,如果 ItemTemplate 已設定,則會忽略這個屬性。

提供 ItemsControl 視覺自定義的絕佳彈性,並提供許多樣式和範本化屬性。 ItemContainerStyle使用屬性或 ItemContainerStyleSelector 屬性來設定樣式,以影響包含數據項的項目外觀。 例如,針對 ListBox,產生的容器是 ListBoxItem 控件;如果是 ComboBox,則為 ComboBoxItem 控件。 若要影響專案的版面配置,請使用 ItemsPanel 屬性。 如果您在控件上使用群組,則可以使用 GroupStyleGroupStyleSelector 屬性。

如需詳細資訊,請參閱 數據範本化概觀

XAML Attribute Usage

<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>

XAML 值

ResourceExtension 下列其中一項: StaticResource、 或 DynamicResource。 除非樣式本身包含可能運行時間參考的參考,例如系統資源或使用者喜好設定, StaticResource 否則通常建議參考樣式以達到效能。

SelectorResourceKeyx:Key 字串值,參考要作為資源要求的選取器。

相依性屬性資訊

標識元欄位 ItemTemplateSelectorProperty
設定為的元數據屬性 true

適用於

產品 版本
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

另請參閱