DisplayMemberPath和SelectedValuePath是两个属性成员,但它们并不是来自同一个类。DispalyMemberPath属性由ItemsControl类公开,而SelectedValuePath是Selector类的属性。当向ItemsControl控件添加的对象如果不是可视化对象时,会调用该对象的ToString()方法来获得该对象的字符串表示形式,然后在ItemsControl控件中使用TextBlock控件来呈现。
这就引出一个新的问题:如果对象的类型是复合类型,或者开发者自定义的类型,调用ToString方法通常返回的是对象的类型名称,而不是类实例的成员信息,这显然没有实际意义。
为了解决上述问题,ItemsControl类公开一个DisplayMemberPath属性,用来设置在ItemsControl控件中显示对象的哪个属性的值。例如,一个表示学员信息的Student类,它的Name属性表示学员姓名,Age属性表示学员的年龄。若是直接把Student实例添加到ItemsControl控件的项集合中,那么ItemsControl中只显示Student的类型名(包括命名空间的名称,如Demo.Student),而不会显示Student实例上各个属性的值。这时候如果设置DisplayMemberPath属性为Name,那么ItemsControl控件中就会显示Student实例额Name属性的值。
从Selector派生的控件允许用户对列表中的项进行选择,SelectedIndex属性表示被选中的项在集合中的索引(索引值从0开始),SelectedItem属性表示被选中的项。SelectedValuePath属性用于指定用源对象中的哪个成员的值来设置SelectedValue属性的值。例如上面举例的Student类,如果SelectedValuePath属性设置为Age,那么Se