在仅包含文本条目的组合框中获取所选文本的最简单方法是什么?

时间:2010-09-15 20:13:04

标签: wpf combobox selecteditem selectedvalue selectedtext

我的WPF ComboBox仅包含文本条目。用户将选择一个。 获取所选ComboBoxItem文本的最简单方法是什么?请在C#和Visual Basic中回答。这是我的ComboBox:

<ComboBox Name="cboPickOne">
    <ComboBoxItem>This</ComboBoxItem>
    <ComboBoxItem>should be</ComboBoxItem>
    <ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>

顺便说一下,我知道答案,但要找到它并不容易。我以为我会发布问题来帮助别人。修订:我学到了更好的答案。通过添加SelectedValuePath =“Content”作为ComboBox属性,我不再需要丑陋的强制转换代码。请参阅下面的安迪回答。

8 个答案:

答案 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();