WPF控件模型
绿色代表抽象类,蓝色代表非抽象类
控件内容模型
System.Windows.Controls.Control类:表示 用户界面 UI 元素的基类,这些元素使用ControlTemplate来定义其外观
- ContentControl:ContentControl 是一种包含一段内容的 Control
- HeaderedContentControl:包含一段内容并具有 Header 的 ContentControl
- ItemsControl:可包含多个项目(例如字符串、对象或其他元素)的 Control
- HeaderedItemsControl:可包含多个项目(例如字符串、对象或其他元素)并具有标题的ItemsControl
ContentControl
ContentControl模型的类型具有一个 Content 属性。Content 属性的类型为 Object,因此,对于您在 ContentControl 中可以放置的内容没有任何限制。可以使用可扩展应用程序标记语言 XAML 或代码来设置 Content。以下控件使用 ContentControl 内容模型:Button、ButtonBase、CheckBox、ComboBoxItem、ContentControl、Frame、GridViewColumnHeader、GroupItem、Label、ListBoxItem、ListViewItem、NavigationWindow、RadioButton、RepeatButton、ScrollViewer、StatusBarItem、ToggleButton、ToolTip、UserControl、Window
在Content中只能放置一个控件(可以放置一个容器,然后再在容器中放置多个控件)
<Button Margin="5"> <Button.Content> <Image Source="Images/DVD.png" Width="48" Height="48" /> </Button.Content></Button><Button Margin="5"> <Image Source="Images/DVD.png" Width="48" Height="48" /></Button>HeaderedContentControl模型
HeaderedContentControl类继承ContentControl类,表示带有Header的ContentControl,其除了具有ContentControl的Content属性外,还具有一个Header属性,Header的类型也是Object对象,与Content属性的用法类似。从 HeaderedContentControl 继承的控件有:Expander、GroupBox、TabItem。
ItemsControl模型
从 ItemsControl 继承的控件包含一个对象集合。 ItemsControl 的一个示例是 ListBox。可以使用 ItemsSource 属性或 Items 属性来填充一个 ItemsControl。
HeaderedItemsControl模型
HeaderedItemsControl 从 ItemsControl 类继承。HeaderedItemsControl 定义 Header 属性,该属性遵从相同的规则,因为 HeaderedContentControl. WPF 的 Header 属性附带三个从 HeaderedItemsControl 继承的控件:MenuItem、ToolBar、TreeViewItem
Panel内容模型
System.Windows.Controls.Panel抽象类:为所有 Panel 元素提供基类。使用 Panel 元素在 Windows Presentation Foundation WPF 应用程序中放置和排列子对象,Panel内容模型包含的容器有:Canvas,DockPanel,Grid,TabPanel,ToolBarOverflowPanel,UniformGrid,StackPanel,ToolBarPanel,VirtualizingPanel,VirtualizingStackPanel,WrapPanel;对于Panel模型,其包含一个Children属性,表示其所有的子控件和子容器的集合
Sharp模型
System.Windows.Sharps.Sharp抽象类:为 Ellipse、Polygon 和 Rectangle 之类的形状元素提供基类
Decorator模型
System.Windows.Controls.Decorator类:提供在单个子元素(如 Border 或 Viewbox)上或周围应用效果的元素的基类,Decorator模型的主要控件包含:,AdornerDecorator,Border,InlineUIContainer,BulletDecorator,ButtonChrome,ClassicBorderDecorator,InkPresenter,ListBoxChrome,SystemDropShadowChrome,Viewbox;Decorator模型包含一个Child属性,表示其包含的一个子元素(注意,只能是一个子元素(控件或容器,在容器中可以再添加其他的控件)),Child属性的XAML标记可以省略。
<StackPanel x:Name="mainPanel"> <Border BorderThickness="5" BorderBrush="DarkBlue" Margin="5"> <Border.Child> <TextBox Text="TextBox Content"/> </Border.Child> </Border></StackPanel>