DropDownList与.NET中的字符串索引?

时间:2014-03-18 00:00:49

标签: c# .net wpf combobox

在.NET中是否存在相同的内容:

<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select> 

我的意思是构建一个下拉列表,它为每个选项使用字符串索引,而不是使用数字索引。我浏览了所有组合框的属性,但我没有找到任何方法来做到这一点。

2 个答案:

答案 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