Привязка ComboBox возвращает тип элемента управления поверх SelectedValue

У меня есть ComboBox:

<ComboBox Grid.Column="1" Grid.Row="9" SelectedValue="{Binding SelectedReason}">
    <ComboBoxItem Content="Bug Report" IsSelected="True"/>
    <ComboBoxItem Content="Suggestion"/>
    <ComboBoxItem Content="Complaint"/>
    <ComboBoxItem Content="Other"/>
</ComboBox>

... который связывает с Property:

private string _selectedReason;
public string SelectedReason
{
    get { return _selectedReason; }
    set
    {
        if (_selectedReason == value)
        {
            return;
        }

        _selectedReason = value;
        OnPropertyChanged("SelectedReason");
    }
}

Когда я вывожу valueвместо того, чтобы показывать что-то вроде:

Bug Report
Suggestion

...Я получил:

System.Windows.Controls.ComboBoxItem: Bug Report
System.Windows.Controls.ComboBoxItem: Suggestion

Я пытался с помощью SelectedItem вместо этого, но результат тот же. Все, что я хочу, это значение, а не тип элемента управления. Есть идеи, что происходит?

1 ответ

Решение

Вы должны установить SelectedValuePath в Content:

<ComboBox Grid.Column="1" Grid.Row="9" SelectedValue="{Binding SelectedReason}" 
        SelectedValuePath="Content">
    <ComboBoxItem Content="Bug Report" IsSelected="True"/>
    <ComboBoxItem Content="Suggestion"/>
    <ComboBoxItem Content="Complaint"/>
    <ComboBoxItem Content="Other"/>
</ComboBox>
Другие вопросы по тегам