Почему SelectedItem не отображается в выпадающем списке - PullRequest
2 голосов
/ 09 мая 2011

При использовании нижеприведенной привязки в XAML выбранный элемент не отображается в выпадающем списке (в частности, текущий тип не отображается для сайта). Мы используем калибровочную микрорамку и DevForce Ideablade. MySite - это объект Ideablade.

<ComboBox Grid.Column="3" Grid.Row="3" 
          ItemsSource="{Binding MySiteTypes}"
          DisplayMemberPath="description"
          SelectedItem="{Binding MySite.SiteType, Mode=TwoWay}"
          SelectedValuePath="description"/>

Код в ViewModel:

    private BindableCollection<SiteType> _mySiteTypes;
    public BindableCollection<SiteType> MySiteTypes
    {
        get { return _mySiteTypes; }
        set { _mySiteTypes = value; NotifyOfPropertyChange(() => MySiteTypes); }
    }

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

Ответы [ 3 ]

2 голосов
/ 09 мая 2011

Из моего опыта работы с ComboBox такие проблемы часто сводятся к срокам.Доступен ли ваш ItemSource (MySiteTypes) до оценки привязки SelectedItem?

2 голосов
/ 09 мая 2011

Хорошо, я нашел решение (Myles J был близок):

Выбранный элемент оценивается перед загрузкой элементов из источника, в результате чего выбранный элемент не отображается.Мне нужно было вызвать NotifyOfPropertyChange для MySite ПОСЛЕ выполнения асинхронного запроса, который заполняет MySiteTypes.

0 голосов
/ 09 мая 2011

Элементы загружены? Возможно, вам придется использовать DataTemplate, чтобы показать их текстовое свойство.

Если это строки, у меня недавно была похожая проблема, и мне пришлось использовать selectedIndex с помощью конвертера:

Конвертер для ComboBox в Silverlight 4

...