Подтвердить что ты не робот

Каков самый простой способ получить выделенный текст в поле со списком, содержащее только текстовые записи?

Мой WPF ComboBox содержит только текстовые записи. Пользователь выберет один. Каков самый простой способ получить текст выбранного ComboBoxItem?. Ответьте как на С#, так и на Visual Basic. Вот мой ComboBox:

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

Кстати, я знаю ответ, но найти его было нелегко. Я думал, что отправлю вопрос, чтобы помочь другим. ПЕРЕСМОТР: Я узнал лучший ответ. Добавляя SelectedValuePath = "Content" в качестве атрибута ComboBox, мне больше не нужен уродливый код. См. Ответ Энди ниже.

4b9b3361

Ответ 1

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

В коде:

   stringValue = cboPickOne.SelectedValue.ToString()

Ответ 2

Только для разъяснения Хайнци и Джима Бриссома ответы здесь - это код в Visual Basic:

Dim text As String = DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content.ToString()

и С#:

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

Спасибо!

Ответ 3

Я просто сделал это.

string SelectedItem = MyComboBox.Text;

Ответ 4

Если вы добавляете элементы в ComboBox как

youComboBox.Items.Add("Data"); 

Затем используйте это:

youComboBox.SelectedItem; 

Но если вы добавляете элементы привязки данных, используйте это:

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

Ответ 5

Использование cboPickOne.Text должно дать вам строку.

Ответ 6

Если вы уже знаете, что содержимое вашего ComboBoxItem будет только строкой, просто получите доступ к содержимому в виде строки:

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

Ответ 7

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

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

Поскольку мы знаем, что содержимое является строкой, я предпочитаю использовать метод вызова ToString().

Ответ 8

Используйте свойство DataRowView.Row.Item[Index] или ItemArray[Index], чтобы получить SelectedItem, где Index является индексом столбца в DataTable, используемом как itemSource для combobox. В вашем случае это будет 0. Вместо индекса вы также можете передать имя столбца:

VB:

Dim sItem As String=DirectCast(cboPickOne.SelectedItem, DataRowView).Row.Item(1).ToString()

С#

String sItem=((DataRowView)cboPickOne.SelectedItem).Row.Item[1].ToString();

Чтобы получить SelectedValue, вы можете использовать:

VB:

Dim sValue As String=cboPickOne.SelectedValue.ToString()

С#

String sValue=cboPickOne.SelectedValue.ToString();