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

自訂 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 ,根據傳遞之 物件的 屬性值 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 否則通常建議參考樣式以達到效能。

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

相依性屬性資訊

識別碼欄位 ItemTemplateSelectorProperty
設定為 的中繼資料屬性 true

適用於

另請參閱