控件属性
DisplayMemberPath:这个属性告诉ListBox显示每条数据的那个属性,换句话说,ListBox
会去调用这个属性值的Tostring()方法,把得到的字符串放入一个TextBlock(最简单的文本控件),然后再按照前面说的办法把TextBlock包装进一个ListBoxItem里。
ListBox的SelectedValuePath属性将与其SelectedValue属性配合使用。当你调用
SelectedValue属性时,ListBox先找到选中的Item所对应的数据对象,然后把SelectedValuePath的值当作数据对象的属性名称并把这个属性的值取出来。DisplayMemberPath和SelectedValuePath是两个相当简化的属性。
DisplayMemberPath只能显示简单的字符串,想用更加复杂的形式显示数据需要使用
DataTemplate。SelectedValuePath也只能返回单一的值,如果想进行一些复杂的操作,
不妨直接使用ListBox的SelectedItem和SelectedItems属性,这两个属性返回的就是数据
集合中对象,得到原始的数据对象后就任由程序员操作了。
HeaderedItemsControl族
本族控件除了具有ItemsControl的特性外,还具显示标题的能力。元素特点如下:
均派生自HeaderedItemsControl类。
它们都是控件,用于显示列表化的数据,同时可以显示一个标题。
内容属性为Items、ItemsSource和Header。
因为与ItemsControl非常类似,在此就不浪费时间了。本族控件只有3个:MenuItem、
TreeViewItem、ToolBar。
Decorator族
本族中的元素是在UI上起装饰效果的。如可以使用Border元素为一些组织在一起的内
容加个边框。如果需要组织在一起的内容能够自由缩放,则可使用ViewBox元素。
本族元素的特点如下:均派生自Decorator类。起UI装饰作用。内容属性为Child。
只能由单一元素充当内容。
TextBlock和TextBox
这两个控件最主要的功能是显示文本。TextBlock只能显示文本,不能编辑,所以又
称静态文本。TextBox则运行用户编辑其中的内容。TextBlock虽然不能编辑内容,但可以
使用丰富的印刷级的格式控制标记显示专业的排版效果。
TextBox不需要太多的格式显示,所以它的内容是简单的字符串,内容属性为Text。
TextBlock由于需要操纵格式,所以内容属性是Inlines(印刷中的“行”),同时,
TextBlock也保留一个名为Text的属性,当简单地显示一个字符串时,可以使用这个属
性。
Shape族元素 友好的用户界面离不开各种图形的搭配,Shape族元素(它们只是简单的视觉元素,不是控件)就是专门用来在UI上绘制图形的一类元素。这类元素没有自己的内容,我们可以使用Fill属性为它们设置填充效果,还可以使用Stroke属性为它们设置边线的效果。
本族元素的特点如下:均派生自Shape类。用于2D图形绘制。无内容属性。使用Fill属性设置填充,使用Stroke属性设置边线。
Panel族元素
之所以把Panel族元素放在最后是因为这一族控件实在是太重要了——所有用于UI布
局的元素都属于这一族。本族元素的特点如下:均派生自Panel抽象类;主要功能是控制UI布局。内容属性为Children。内容可以是多个元素,Panel元素将控制它们的布局。对比ItemsControl和Panel元素,虽然内容都可以是多个元素,但ItemsControl强调以列表的形式来展现数据而Panel则强调对包含的元素进行布局,所以ItemsControl的内容属性是Items和ItemsSourse而Panel的内容属性名为Children。WPF框架中这种良好的命名习惯非常值得我们学习。