我的WPF组合框仅包含文本条目。用户将选择一个。 获得所选ComboBoxItem的文本的最简单方法是什么?请在C#和Visual Basic中都回答。这是我的组合框:
<ComboBox Name="cboPickOne">
<ComboBoxItem>This</ComboBoxItem>
<ComboBoxItem>should be</ComboBoxItem>
<ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>
顺便说一句,我知道答案,但要找到它并不容易。我以为我会发布问题来帮助他人。修订:我已经学到了更好的答案。通过将SelectedValuePath =“ Content”添加为ComboBox属性,我不再需要难看的转换代码。请参阅下面的安迪的答案。
<ComboBox
Name="cboPickOne"
SelectedValuePath="Content"
>
<ComboBoxItem>This</ComboBoxItem>
<ComboBoxItem>should be</ComboBoxItem>
<ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>
使用代码:
stringValue = cboPickOne.SelectedValue.ToString()
只是为了澄清Heinzi和Jim Brissom的答案,这里的代码是Visual Basic:
Dim text As String = DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content.ToString()
和C#:
string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();
谢谢!
如果您已经知道ComboBoxItem的内容仅是字符串,只需以字符串形式访问内容:
string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();
我刚刚这样做。
string SelectedItem = MyComboBox.Text;
如果在ComboBox中将项目添加为
youComboBox.Items.Add("Data");
然后使用此:
youComboBox.SelectedItem;
但是如果您通过数据绑定添加项目,请使用此:
DataRowView vrow = (DataRowView)youComboBox.SelectedItem;
DataRow row = vrow.Row;
MessageBox.Show(row[1].ToString());
使用cboPickOne.Text
应该给您字符串。
var s = (string)((ComboBoxItem)cboPickOne.SelectedItem).Content;
Dim s = DirectCast(DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content, String)
因为我们知道内容是字符串,所以我更喜欢使用ToString()
方法调用进行强制转换。
使用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();