在.NET中是否存在相同的内容:
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
我的意思是构建一个下拉列表,它为每个选项使用字符串索引,而不是使用数字索引。我浏览了所有组合框的属性,但我没有找到任何方法来做到这一点。
答案 0 :(得分:2)
答案是,不,没有办法让字符串索引进入IEnumerable但是你不会在WPF中这样做。有两种方法可以从组合框中获取所选项目,SelectedIndex(始终为int)和SelectedItem。
通常不使用SelectedIndex,因为您通常不关心所选项目的索引,您关心所选项目本身,这可以通过...轻松访问...
SelectedItem:将此属性绑定到集合类型的对象(在您的示例中为“CarManufacturer”),现在您自动拥有整个对象,没有真正的理由拥有“字符串”索引。您可以使用DisplayMemberPath获取每个项目的“好”名称。
<ComboBox SelectedItem={Binding SelectedManufacturer} DisplayMemberPath="Name" ItemsSource={Binding CarManufacturers}/>
还有“SelectedValue”,它返回所选项目的“显示”字符串,但由于其包含的信息不一定对后备集合中的项目是唯一的,因此使用频率更低,因此不太有用用于检索所述项目。但是有一些用例可以利用它。
答案 1 :(得分:1)
你可以做你想要的,但不是真的。
WPF中的ComboBox
有三个属性:
SelectedIndex
:这是一个从零开始的整数,表示所选项目的索引值。SelectedItem
:这是绑定对象序列中的实际选定对象。SelectedValue
/ SelectedValuePath
:这两个属性结合使用,指向绑定对象上的属性。有关一些好的示例,请参阅此question/answer。
在您的情况下,您可以创建一个Tuple<string, string>
序列(或代表该对的任何对象)并将其绑定到集合,然后利用SelectedValue
和{{1}获取一个字符串值,同时使用SelectedValuePath
显示另一个字符串值。
DisplayMemberPath