获得仅包含文本条目的组合框的选定文本的最简单方法是什么?

问题描述 投票:29回答:8

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

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

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

wpf combobox selecteditem selectedvalue selectedtext
8个回答
56
投票
<ComboBox 
  Name="cboPickOne"
  SelectedValuePath="Content"
  >
  <ComboBoxItem>This</ComboBoxItem>
  <ComboBoxItem>should be</ComboBoxItem>
  <ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>

使用代码:

   stringValue = cboPickOne.SelectedValue.ToString()

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
投票

如果您已经知道ComboBoxItem的内容仅是字符串,只需以字符串形式访问内容:

string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();

2
投票

我刚刚这样做。

string SelectedItem = MyComboBox.Text;

1
投票

如果在ComboBox中将项目添加为

youComboBox.Items.Add("Data"); 

然后使用此:

youComboBox.SelectedItem; 

但是如果您通过数据绑定添加项目,请使用此:

DataRowView vrow = (DataRowView)youComboBox.SelectedItem;
DataRow row = vrow.Row;
MessageBox.Show(row[1].ToString());

1
投票

使用cboPickOne.Text应该给您字符串。


0
投票
var s = (string)((ComboBoxItem)cboPickOne.SelectedItem).Content;

Dim s = DirectCast(DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content, String)

因为我们知道内容是字符串,所以我更喜欢使用ToString()方法调用进行强制转换。


-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();
© www.soinside.com 2019 - 2024. All rights reserved.