这个月,学习了WPF各种内容模型,WPF的UI元素的类型有11种。而且可以把符合某类内容模型的UI元素称为一个族,每个族用它们共同基类来命名。这其中11种UI元素类型可分为8大族。
比如ContentControl族,ContentControl族元素主要有4个特点,4个特点分别是①:均派生自ContentControl类。②:它们都是控件(Control)。③:内容属性的名称为Content。④:只能由单一元素充当其内容。前三个特点,容易理解。第四个特点,说的有点模糊。Button控件属于 ContentControl族。如果你想在Button控件放一些文字和图片。你想让Button的内容既包含文字又包含图片是不行的。
ItemsControl族的有4个特点。4个特点分别是:①:均派生自ItemsControl类。 ②:它们都是控件,用于显示列表化的数据。③:内容属性为Items或ItemsSource。④:每种ItemsControl都对应有自己的条目容器(Item Container)。
ItemsControl族包含的控件有ItemsControl, Menu, MenuBase, ContextMenu等控件,ItemsControl族包含的控件还有很多,就不一一列举。
HeaderedContentControl族。HeaderedContentControl族的有5个特点。5个特点分别是:①:它们都派生自HeaderedContentControl类,HeaderedContentControl是
ContentControl类的派生类。 ②:它们都是控件,用于显示带标题的数据。 ③:除了用于显示主体内容的区域外,控件还具有一个显示标题(Header)的区域。 ④:内容属性为Content和Header。
⑤: 无论是Content还是Header都只是容纳一个元素作为其内容。
HeaderedContentControl族包含的控件有Expander, GroupBox , HeaderedContentControl, TabItem。
HeaderedItemsControl族的有3个特点。3个特点分别是:①:均派生自HeaderedItemsControl类。 ②:它们都是控件,用于显示列表化的数据,同时可以显示一个标题。③:内容属性为Items、ItemsSource和Header。
HeaderedItemsControl族族控件只有3个:MenuItem、 TreeViewItem、ToolBar。
TextBlock和TextBox,这两个控件最主要的功能是显示文本。TextBlock只能显示文本,不能编辑,所以又称静态文本。TextBox则运行用户编辑其中的内容。TextBlock虽然不能编辑内容,但可以使用丰富的印刷级的格式控制标记显示专业的排版效果。TextBox不需要太多的格式显示,所以它的内容是简单的字符串,内容属性为Text。TextBlock由于需要操纵格式,所以内容属性是Inlines(印刷中的“行”),同时,TextBlock也保留一个名为Text的属性,当简单地显示一个字符串时,可以使用这个属性。
Shape族元素,它们只是简单的视觉元素,不是控件,就是专门用来在UI上绘制图形的一类元素。这类元素没有自己的内容,我们可以使用Fill属性为它们设置填充效果,还可以使用Stroke属性为它们设置边线的效果。Shape族元素的有4个特点。分别是:①:均派生自Shape类。②:用于2D图形绘制③:无内容属性。④:使用Fill属性设置填充,使用Stroke属性设置边线。
Panel族元素,这一族控件是最重要,因为所有用于UI布局的元素都属于这一族。Panel族元素也有4特点,分别是①:均派生自Panel抽象类。②:主要功能是控制UI布局。③:内容属性为Children。④:内容可以是多个元素,Panel元素将控制它们的布局。对比ItemsControl和Panel元素,虽然内容都可以是多个元素,但ItemsControl强调以列表的形式来展现数据而Panel则强调对包含的元素进行布局。这两族还是有着巨大差别。