ComboBox SelectedItem дисплей - PullRequest
       5

ComboBox SelectedItem дисплей

1 голос
/ 14 января 2011

Привязка ниже получает и устанавливает выбранный элемент. Он также отображает элементы правильно, что в данном случае означает отображение названия отдела.

Однако вместо отображения названия выбранного отдела отображается ToString () выбранного отдела.

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

Приветствия
Berryl

<ComboBox 
    Style="{StaticResource ComboBoxStyle}" 
    ItemContainerStyle="{StaticResource ComboBoxItemStyle}"

    ItemsSource="{Binding Path=Departments}" 
    SelectedItem="{Binding Path=Department, Mode=TwoWay}" 
    IsSynchronizedWithCurrentItem="True" 
    DisplayMemberPath="Name"
/>

Ответы [ 2 ]

2 голосов
/ 06 февраля 2018

Это связано с тем, что .Net Framework вызывает метод ToString() для каждого наблюдаемого элемента коллекции.Чтобы решить эту проблему, вы можете переопределить метод ToString() в вашей модели следующим образом:

public override string ToString()
{
    return this.Name;
}
1 голос
/ 14 июня 2011

Мне удалось решить проблему, изменив DisplayMemberPath на DataTemplate, как показано ниже.

Хотя я не уверен, почему здесь не работает DisplayMemberPath, я должен предположить, что в моем коде была какая-то другая ошибка.Будучи старым вопросом, код с тех пор изменился и не стоит воссоздавать.

В качестве отступления, я обычно использую DataTemplates сейчас, даже для простых случаев, подобных этому.1007 * Berryl

<ComboBox.ItemTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding Name}" />
    </DataTemplate>
</ComboBox.ItemTemplate>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...