在.net中带字符串索引的下拉列表
本文关键字:索引 下拉列表 字符串 net | 更新日期: 2023-09-27 17:50:46
在。net中是否有类似的:
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
我的意思是建立一个下拉列表,为每个选项使用字符串索引,而不是使用数字索引。我浏览了所有的组合框的属性,我没有找到任何方法来做到这一点。
答案是否定的,没有办法将字符串索引放入IEnumerable中,但在WPF中无论如何也不会这样做。有两种方法可以将选中的项从组合框中取出:SelectedIndex(总是int型)和SelectedItem。
SelectedIndex通常不使用,因为您通常不关心所选项的索引,而是关心所选项本身,这很容易通过…
SelectedItem:将这个属性绑定到一个集合类型的对象(在你的例子中是"CarManufacturer"),现在你自动拥有了整个对象,没有真正的理由要有一个"字符串"索引。您可以使用DisplayMemberPath来获得每个项目的"漂亮"名称。
<ComboBox SelectedItem={Binding SelectedManufacturer} DisplayMemberPath="Name" ItemsSource={Binding CarManufacturers}/>
还有"SelectedValue",它返回所选项目的"Display"字符串,但使用频率更低,因为它包含的信息不一定是后备集合中项目的唯一信息,因此对于检索所述项目不是很有用。有一些用例可以利用它。
你可以做你想做的,但不是真的。
WPF中的ComboBox
有三个属性:
-
SelectedIndex
:这是一个从零开始的整数,表示所选项目的索引值。 -
SelectedItem
:这是绑定对象序列中实际选中的对象。 -
SelectedValue
/SelectedValuePath
:这两个属性一起使用,指向绑定对象的属性。
看这个问题/答案的一些很好的例子。
在您的示例中,您可以创建一个Tuple<string, string>
序列(或任何表示该对的对象)并将其绑定到集合,然后利用SelectedValue
和SelectedValuePath
来获取一个字符串值,同时使用DisplayMemberPath
来显示另一个字符串值。
<ComboBox ItemsSource="{Binding Path=SomeCollection}"
SelectedValue={Binding Path=SelectedOption}"
SelectedValuePath="Item1"
DisplayMemberPath="Item2" />