資訊
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

ItemsControl.ItemTemplate 屬性

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

命名空間:  System.Windows.Controls
組件:  PresentationFramework (在 PresentationFramework.dll 中)
針對 XAML 的 XMLNS: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

[BindableAttribute(true)]
public DataTemplate ItemTemplate { get; set; }
<object>
  <object.ItemTemplate>
    <DataTemplate .../>
  </object.ItemTemplate>
</object>
<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>

XAML 值

ResourceExtension

下列其中一項:StaticResource 標記延伸DynamicResource 標記延伸 除非樣式本身包含可能執行階段參考的參考,如系統資源或使用者偏好設定,否則為了效能,通常會建議使用樣式的 StaticResource 標記延伸 參考。

TemplateResourceKey

x:Key 指示詞 字串值,用以參考要求做為資源的樣板。

屬性值

型別:System.Windows.DataTemplate
DataTemplate ,用來指定資料物件的視覺效果。 預設值為 null

識別項欄位

ItemTemplateProperty

中繼資料屬性設為 true

None

使用 ItemTemplate 來指定資料物件的視覺效果。 如果您的 ItemsControl 繫結至集合物件,而您沒有使用 DataTemplate 來提供特定的顯示指示,則每個項目所產生的 UI 就是基礎集合中每個物件的字串表示。

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

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

  2. 部分的準備過程會牽涉將 ListBoxItemTemplate 複製為 ListBoxItemContentTemplate

  3. 與所有的 ContentControl 型別類似,ListBoxItemControlTemplate 包含 ContentPresenter 套用該樣板時,會建立一個 ContentPresenter,其 ContentTemplate 會繫結至 ListBoxItemContentTemplate

  4. 最後,ContentPresenter 會將該 ContentTemplate 套用在本身,進而建立 UI

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

ItemsControl 提供相當大的彈性讓使用者自訂視覺化內容,並且提供許多設定樣式和範本屬性。 請使用 ItemContainerStyle 屬性或 ItemContainerStyleSelector 屬性來設定樣式,以影響包含資料項目 (item) 之項目 (element) 的外觀。 例如,對於 ListBox,產生的容器是 ListBoxItem 控制項,而對於 ComboBox,則是 ComboBoxItem 控制項。 若要影響項目的配置,請使用 ItemsPanel 屬性。 如果您在控制項中使用群組,則可以使用 GroupStyleGroupStyleSelector 屬性。

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

下列範例顯示如何建立 DataTemplate 內嵌。 DataTemplate 指定每個資料項目 (item) 在 StackPanel 中都要顯示成三個 TextBlock 項目 (element)。 在此範例中,資料物件是一個叫做 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>


較常見的做法是在資源區段中定義 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}"/>


如需完整範例,請參閱資料樣板化範例簡介 (英文)。

.NET Framework

支援版本:4、3.5、3.0

.NET Framework Client Profile

支援版本:4、3.5 SP1

Windows 7, Windows Vista SP1 (含) 以後版本, Windows XP SP3, Windows Server 2008 (不支援伺服器核心), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心), Windows Server 2003 SP2

.NET Framework 並不支援各種平台的所有版本。如需支援的版本的清單,請參閱.NET Framework 系統需求

社群新增項目

顯示:
© 2014 Microsoft