wpf 中 自定义模板关键属性 ContentPresenter 和 ItemsHost
在 WPF 中,<ContentPresenter /> 是一个非常重要的元素,通常用于自定义控件模板中。它的主要作用是表示控件的内容,并且允许你将内容(例如文本、图像或其他控件)插入到控件的特定位置。
1. 自定义 Button 模板:
<ControlTemplate TargetType="Button"> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> </Border> </ControlTemplate>
2.自定义 ListBoxItem 模板:
<ControlTemplate TargetType="ListBoxItem"> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}"> <ContentPresenter /> </Border> </ControlTemplate>
ItemsHost 是一个属性,通常用于 ItemsControl 或其派生类(例如 ListBox、ComboBox、ListView 等)。它用于指定控件中显示子项的容器。
在这个例子中,StackPanel 被设置为 ItemsHost,ItemsControl 的子项会显示在 StackPanel 中
<ItemsControl> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel IsItemsHost="True"/> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> </ItemsControl>
在某些控件中,ContentPresenter 和 ItemsHost 可能会同时存在。例如,在自定义 TabControl 时:
<ControlTemplate TargetType="TabControl"> <DockPanel> <!-- ItemsHost:显示 TabItem 标题 --> <TabPanel IsItemsHost="True" DockPanel.Dock="Top"/> <!-- ContentPresenter:显示选中的 TabItem 内容 --> <ContentPresenter ContentSource="SelectedContent"/> </DockPanel> </ControlTemplate>
在这个例子中:
TabPanel是ItemsHost,用于显示所有TabItem的标题。ContentPresenter用于显示当前选中的TabItem的内容。
桂棹兮兰桨,击空明兮溯流光。
浙公网安备 33010602011771号