ItemsControl.ItemTemplate 屬性

定義

取得或設定用來顯示每個項目的 DataTemplate

public:
 property System::Windows::DataTemplate ^ ItemTemplate { System::Windows::DataTemplate ^ get(); void set(System::Windows::DataTemplate ^ value); };
[System.ComponentModel.Bindable(true)]
public System.Windows.DataTemplate ItemTemplate { get; set; }
[<System.ComponentModel.Bindable(true)>]
member this.ItemTemplate : System.Windows.DataTemplate with get, set
Public Property ItemTemplate As DataTemplate

屬性值

DataTemplate

DataTemplate,其指定資料物件的視覺效果。 預設為 null

屬性

範例

下列範例示範如何建立 DataTemplate 內嵌。 DataTemplate指定每個資料項目在 內顯示為三 TextBlock 個專案 StackPanel 。 在此範例中,資料物件是稱為 的 Task 類別。 請注意,此範本中的每個 TextBlock 元素都會系結至 類別的 Task 屬性。

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}">
   <ListBox.ItemTemplate>
     <DataTemplate>
       <StackPanel>
         <TextBlock Text="{Binding Path=TaskName}" />
         <TextBlock Text="{Binding Path=Description}"/>
         <TextBlock Text="{Binding Path=Priority}"/>
       </StackPanel>
     </DataTemplate>
   </ListBox.ItemTemplate>
 </ListBox>

在 resources 區段中定義 DataTemplate 更常見,因此它可以是可重複使用的物件,如下列範例所示:

<Window.Resources>
<DataTemplate x:Key="myTaskTemplate">
  <StackPanel>
    <TextBlock Text="{Binding Path=TaskName}" />
    <TextBlock Text="{Binding Path=Description}"/>
    <TextBlock Text="{Binding Path=Priority}"/>
  </StackPanel>
</DataTemplate>
</Window.Resources>

現在您可以使用 myTaskTemplate 做為資源,如下列範例所示︰

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}"
         ItemTemplate="{StaticResource myTaskTemplate}"/>

如需完整範例,請參閱資料範本化範例簡介

備註

您可以使用 ItemTemplate 來指定資料物件的視覺效果。 ItemsControl如果您的 系結至集合物件,而且您未使用 DataTemplate 提供特定的顯示指令,則每個專案產生的 UI 是基礎集合中每個物件的字串表示。

當您在 上 ItemsControl 設定 ItemTemplate 時,UI 會產生如下 (ListBox ,並使用 作為範例) :

  1. 在內容產生期間,會 ItemsPanel 起始 要求,以 ItemContainerGenerator 為每個資料項目建立容器。 針對 ListBox ,容器是 ListBoxItem 。 產生器會回呼至 ItemsControl ,以準備容器。

  2. 準備的一部分牽涉到 將 的 ItemTemplate ListBox 複製為 ContentTemplateListBoxItem

  3. 類似于所有 ContentControl 型別, ControlTemplateListBoxItem 包含 ContentPresenter 。 套用範本時,它會建立 ContentPresenter ,其 ContentTemplate 系結至 ContentTemplateListBoxItem

  4. 最後,會將 ContentPresenterContentTemplate 套用至本身,並建立 UI。

如果您有多個 DataTemplate 已定義,而且想要提供邏輯以程式設計方式選擇並套用 DataTemplate ,請使用 ItemTemplateSelector 屬性。

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

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

XAML Attribute Usage

<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>  

XAML 值

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

TemplateResourceKey
x:Key 指示詞 字串值,這個值是指要求作為資源的範本。

相依性屬性資訊

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

適用於

另請參閱