@Zulkund

Извлечение элемента ComboBox в WPF?

Добрый день! Столкнулся с проблемой извлечения элемента ComboBox. Разметка такая:
<ComboBox x:Name="CB_finWell" Margin="2 0 2 0" SelectionChanged="CB_finWell_SelectionChanged" >
                        <TextBlock><Run Text="ствол"/></TextBlock>
                        <TextBlock><Run Text="значение"/></TextBlock>
                        <TextBlock><Run Text="символ"/></TextBlock>
                    </ComboBox>

В учебном примере рекомендуют делать так:
private void CB_finWell_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ComboBox comboBox = (ComboBox)sender;
            ComboBoxItem selectedItem = (ComboBoxItem)comboBox.SelectedItem;
            MessageBox.Show(selectedItem.Content.ToString());
        }

Но вылетает исключение: An unhandled exception of type 'System.InvalidCastException' occurred in DeviceConstructor.exe
Попробовал по своему, результат 0.
TB_finWell.Text += ((TextBlock)CB_finWell.SelectedItem).Text;

Подскажите, где ошибка и как можно вывести в Showmmesage, текст выбранногоTextBlock'a после его выбора?
  • Вопрос задан
  • 403 просмотра
Решения вопроса 1
MessageBox.Show($"{((ComboBoxItem)((ComboBox)sender).SelectedItem).Content}");
Для TextBlock:
MessageBox.Show($"{((TextBlock)((ComboBox)sender).SelectedItem).Text}");

Обновлено:
Если нужно вытащить данные Run из TextBlock, то используем Inlines.
MessageBox.Show($"{((Run)((TextBlock)((ComboBox)sender).SelectedItem).Inlines.ElementAt(0)).Text}");
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы