共用方式為


ItemsPanelTemplate 類別

定義

指定 ItemsPresenter 針對 ItemsControl專案配置所建立的面板。

public ref class ItemsPanelTemplate : System::Windows::FrameworkTemplate
public class ItemsPanelTemplate : System.Windows.FrameworkTemplate
type ItemsPanelTemplate = class
    inherit FrameworkTemplate
Public Class ItemsPanelTemplate
Inherits FrameworkTemplate
繼承

範例

若要建立水準 ListBox,您可以建立範本來指定水準 StackPanel,並將其設定為 ItemsPanel 屬性。 下列範例顯示建立水準 ListBoxListBoxStyle

<Style TargetType="ListBox">
  <Setter Property="ItemsPanel">
    <Setter.Value>
      <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal"
                    VerticalAlignment="Center"
                    HorizontalAlignment="Center"/>
      </ItemsPanelTemplate>
    </Setter.Value>
  </Setter>
</Style>

下列範例會使用 ControlTemplate 來建立具有圓角的水準 ListBox。 請注意,在此範例中,水準 StackPanel 是在 ControlTemplate內指定,而不是設定 ItemsPanel 屬性。 請注意,IsItemsHost 屬性設定為 StackPanel上的 true,表示產生的專案應該在面板中執行。 如此一來,控制件的使用者就無法取代 ItemsPanel,而不需使用 ControlTemplate。 因此,只有在您知道不想使用範本的情況下取代面板,才這麼做。

<Style TargetType="ListBox">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="ListBox">
        <Border CornerRadius="5" Background="{TemplateBinding ListBox.Background}">
          <ScrollViewer HorizontalScrollBarVisibility="Auto">
            <StackPanel Orientation="Horizontal"
                       VerticalAlignment="Center"
                       HorizontalAlignment="Center"
                       IsItemsHost="True"/>
          </ScrollViewer>
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

或者,您可以執行下列動作以達到相同的結果。 在此情況下,ItemsPresenter 會根據 ItemsPanelTemplate所指定的專案來建立專案的版面配置面板。

<Style TargetType="{x:Type ListBox}">
  <Setter Property="ItemsPanel">
    <Setter.Value>
      <ItemsPanelTemplate>
        <StackPanel Orientation="Horizontal"
                     VerticalAlignment="Center"
                     HorizontalAlignment="Center"/>
      </ItemsPanelTemplate>
    </Setter.Value>
  </Setter>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type ListBox}">
        <Border CornerRadius="5"
                Background="{TemplateBinding ListBox.Background}">
          <ScrollViewer HorizontalScrollBarVisibility="Auto">
            <ItemsPresenter/>
          </ScrollViewer>
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

如需如何在 ItemsControl上使用不同樣式和範本化屬性的範例,請參閱 資料範本化概觀

備註

ItemsPanelTemplate 會指定用於專案配置的面板。 GroupStyle 具有類型為 ItemsPanelTemplatePanel 屬性。 ItemsControl 類型具有類型為 ItemsPanelTemplateItemsPanel 屬性。

每個 ItemsControl 類型都有預設 ItemsPanelTemplate。 針對 ItemsControl 類別,預設 ItemsPanel 值為指定 StackPanelItemsPanelTemplate。 針對 ListBox,預設值會使用 VirtualizingStackPanel。 針對 MenuItem,預設值會使用 WrapPanel。 針對 StatusBar,預設值會使用 DockPanel

建構函式

ItemsPanelTemplate()

初始化 ItemsPanelTemplate 類別的實例。

ItemsPanelTemplate(FrameworkElementFactory)

使用指定的範本,初始化 ItemsPanelTemplate 類別的實例。

屬性

Dispatcher

取得與這個 DispatcherObject 相關聯的 Dispatcher

(繼承來源 DispatcherObject)
HasContent

取得值,這個值表示這個範本是否有優化的內容。

(繼承來源 FrameworkTemplate)
IsSealed

取得值,這個值表示這個物件是否處於不可變狀態,因此無法變更。

(繼承來源 FrameworkTemplate)
Resources

取得或設定可在此範本範圍內使用的資源集合。

(繼承來源 FrameworkTemplate)
Template

取得或設定對象的參考,這個物件會在寫入器定義或套用範本時記錄或播放範本的 XAML 節點。

(繼承來源 FrameworkTemplate)
VisualTree

取得或設定範本的根節點。

(繼承來源 FrameworkTemplate)

方法

CheckAccess()

判斷呼叫端線程是否可存取此 DispatcherObject

(繼承來源 DispatcherObject)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
FindName(String, FrameworkElement)

尋找與此範本內定義之指定名稱相關聯的專案。

(繼承來源 FrameworkTemplate)
GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetType()

取得目前實例的 Type

(繼承來源 Object)
LoadContent()

載入範本的內容做為 對象的實例,並傳回內容的根元素。

(繼承來源 FrameworkTemplate)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
RegisterName(String, Object)

將新的名稱/物件組註冊到目前的名稱範圍。

(繼承來源 FrameworkTemplate)
Seal()

鎖定範本,使其無法變更。

(繼承來源 FrameworkTemplate)
ShouldSerializeResources(XamlDesignerSerializationManager)

傳回值,這個值表示串行化進程是否應該在這個類別的實例上串行化 Resources 屬性值。

(繼承來源 FrameworkTemplate)
ShouldSerializeVisualTree()

傳回值,這個值表示串行化進程是否應該在這個類別的實例上串行化 VisualTree 屬性值。

(繼承來源 FrameworkTemplate)
ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)
UnregisterName(String)

從 XAML 命名範圍移除名稱/對象對應。

(繼承來源 FrameworkTemplate)
ValidateTemplatedParent(FrameworkElement)

檢查樣板化父系是否為非 Null ItemsPresenter 物件。

VerifyAccess()

強制呼叫線程可以存取此 DispatcherObject

(繼承來源 DispatcherObject)

明確介面實作

INameScope.FindName(String)

傳回具有所提供識別名稱的物件。

(繼承來源 FrameworkTemplate)
IQueryAmbient.IsAmbientPropertyAvailable(String)

查詢目前範圍中是否提供指定的環境屬性。

(繼承來源 FrameworkTemplate)

適用於