Это во многом зависит от того, как заполняется коробка.Если это делается путем присоединения DataTable
(или другой коллекции) к ItemsSource
, вы можете найти присоединение обработчика события SelectionChanged
к вашему блоку в XAML, а затем использовать это в коде позади:
private void ComboBoxName_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBox cbx = (ComboBox)sender;
string s = ((DataRowView)cbx.Items.GetItemAt(cbx.SelectedIndex)).Row.ItemArray[0].ToString();
}
Я видел здесь еще 2 ответа, в которых были разные части - у одного был ComboBoxName.Items.GetItemAt(ComboBoxName.SelectedIndex).ToString();
, который выглядит аналогично, но не переводит коробку в DataRowView
, что я нашел, что мне нужно было сделатьи еще: ((DataRowView)comboBox1.SelectedItem).Row.ItemArray[0].ToString();
, используется .SelectedItem
вместо .Items.GetItemAt(comboBox1.SelectedIndex)
.Возможно, это сработало, но я остановился на комбинации из двух, которые я написал выше, и не помню, почему я избегал .SelectedItem
, за исключением того, что он не должен работать для меня в этом сценарии.
Если вы заполняете поле динамически или с помощью элементов ComboBoxItem
в раскрывающемся списке непосредственно в XAML, я использую этот код:
private void ComboBoxName_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBox cbx = (ComboBox)sender;
string val = String.Empty;
if (cbx.SelectedValue == null)
val = cbx.SelectionBoxItem.ToString();
else
val = cboParser(cbx.SelectedValue.ToString());
}
Вы увидите, что я имеюcboParser
, там.Это связано с тем, что вывод SelectedValue
выглядит следующим образом: System.Windows.Controls.Control: Some Value
.По крайней мере, так было в моем проекте.Таким образом, вы должны разобрать ваше Some Value
из этого:
private static string cboParser(string controlString)
{
if (controlString.Contains(':'))
{
controlString = controlString.Split(':')[1].TrimStart(' ');
}
return controlString;
}
Но вот почему на этой странице так много ответов.Это во многом зависит от того, как вы заполняете коробку, и от того, как вы можете извлечь из нее ценность.Ответ может быть правильным в одном случае и неправильным в другом.