ItemsPanelTemplate 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定 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 屬性。 下列範例顯示建立水準 ListBox的 ListBoxStyle。
<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 具有類型為 ItemsPanelTemplate的 Panel 屬性。 ItemsControl 類型具有類型為 ItemsPanelTemplate的 ItemsPanel 屬性。
每個 ItemsControl 類型都有預設 ItemsPanelTemplate。 針對 ItemsControl 類別,預設 ItemsPanel 值為指定 StackPanel的 ItemsPanelTemplate。 針對 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) |