我的WPF ComboBox仅包含文本条目。用户将选择一个。 获取所选ComboBoxItem文本的最简单方法是什么?请在C#和Visual Basic中回答。这是我的ComboBox:
<ComboBox Name="cboPickOne">
<ComboBoxItem>This</ComboBoxItem>
<ComboBoxItem>should be</ComboBoxItem>
<ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>
顺便说一下,我知道答案,但要找到它并不容易。我以为我会发布问题来帮助别人。修订:我学到了更好的答案。通过添加SelectedValuePath =“Content”作为ComboBox属性,我不再需要丑陋的强制转换代码。请参阅下面的安迪回答。
答案 0 :(得分:53)
<ComboBox
Name="cboPickOne"
SelectedValuePath="Content"
>
<ComboBoxItem>This</ComboBoxItem>
<ComboBoxItem>should be</ComboBoxItem>
<ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>
在代码中:
stringValue = cboPickOne.SelectedValue.ToString()
答案 1 :(得分:10)
为了澄清Heinzi和Jim Brissom的答案,这里是代码 Visual Basic :
Dim text As String = DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content.ToString()
和 C#:
string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();
谢谢!
答案 2 :(得分:2)
如果您已经知道ComboBoxItem的内容只是字符串,只需以字符串形式访问内容:
string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();
答案 3 :(得分:2)
如果您在ComboBox中添加项目为
youComboBox.Items.Add("Data");
然后使用:
youComboBox.SelectedItem;
但是如果你通过数据绑定添加项目,请使用:
DataRowView vrow = (DataRowView)youComboBox.SelectedItem;
DataRow row = vrow.Row;
MessageBox.Show(row[1].ToString());
答案 4 :(得分:2)
我刚刚这样做了。
string SelectedItem = MyComboBox.Text;
答案 5 :(得分:1)
使用cboPickOne.Text
应该为您提供字符串。
答案 6 :(得分:0)
var s = (string)((ComboBoxItem)cboPickOne.SelectedItem).Content;
Dim s = DirectCast(DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content, String)
由于我们知道内容是一个字符串,我更喜欢对ToString()
方法调用进行强制转换。
答案 7 :(得分:-1)
使用DataRowView.Row.Item[Index]
或ItemArray[Index]
属性获取SelectedItem
,其中Index是DataTable
中用作itemSource
的列的索引组合框。在你的情况下它将是0.而不是索引你也可以传递列名:
VB:
Dim sItem As String=DirectCast(cboPickOne.SelectedItem, DataRowView).Row.Item(1).ToString()
C#
String sItem=((DataRowView)cboPickOne.SelectedItem).Row.Item[1].ToString();
要获取SelectedValue,您可以使用:
VB:
Dim sValue As String=cboPickOne.SelectedValue.ToString()
C#
String sValue=cboPickOne.SelectedValue.ToString();