WPF中的ComboBox

ComboBox是常用的一种控件。Combox中选项往往和枚举(enum)相对应。

在WPF中,ComboBox有SelectedIndex, SelectedItem, SelectedValue, SelectedValuePath和SelectionBoxItem。这么多和Select相关是不是有点晕?接下来,我们运行一些code来看看他们之间的区别。


创建WeekDay枚举类型

WPF中的ComboBoxWPF中的ComboBox


创建WeekDayWrapper类(如果每个枚举值需要显示其他形式的信息,我们就可以创建Wrapper类,把额外的信息给包含进来。)

WPF中的ComboBoxWPF中的ComboBox


创建静态WeekDayWrappers类

WPF中的ComboBoxWPF中的ComboBox


在UI上创建

- 一个名字为WeekDayCombox的Combox

- 一个名字为WeekDayWrapper的Combox

- 一个名字为ClickMeButton的Button

WPF中的ComboBoxWPF中的ComboBox


WPF中的ComboBoxWPF中的ComboBox


在code-behind中绑定数据源

WPF中的ComboBoxWPF中的ComboBox


接下来我们就观察这些和Select相关的属性的值了。

WPF中的ComboBoxWPF中的ComboBox


第一种情况就是Combox没有选择任何项的时候。

WPF中的ComboBoxWPF中的ComboBox


第二中情况就是ComboBox选择其中一项的时候

WPF中的ComboBoxWPF中的ComboBox


SelectedIndex

没选任何项的时候值是-1,选了项之后的值就是索引值(注意:从0开始)


SelectedItem

数据类型是object,也就是任何类型都可以复制给它。但确切的类型就是我们赋值给ItemsSource是的类型。


SelectedValue

也就是SelectedValuePath指向的属性的数据类型


SelectedValuePath

string类型,属性或者属性链的名称


SelectionBoxItem

在此例中,和SelectedItem没有区别,指向的是同一个东东。