Привязка данных Silverlight 4 MVVM ComboBox не отображается - PullRequest
2 голосов
/ 15 августа 2011

У меня есть ComboBox со следующим XAML

<ComboBox Name="CompanyComboBox"
    ItemsSource="{Binding Path=CompanyList, Mode=OneWay}" 
    SelectedItem="{Binding Path=CurrentCompany, Mode=TwoWay}"
    DisplayMemberPath="Name" />

Проблема:

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

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

  1. Двустороннее связывание комбинированного списка с простым строковым массивом Порядок свойств ItemSource и SelectedValue был правильным
  2. ComboBox.SelectedValue не обновляется из источника привязки чередуется между 'SelectedValue' и 'SelectedIndex' - ни один не работает
  3. Silverlight 4 Combobox с selectedValue с использованием MVVM-Light повышение PropertyChanged перед установкой нового значения также не помогло
  4. Добавление / удаление 'IsEnabled = "{Binding IsReady}' в ComboBox также не помогло
  5. Добавление SelectedValuePath = "Name" или = "Value" остановило сохранение из работы

Ответы [ 4 ]

3 голосов
/ 15 августа 2011

Необходимо переписать метод Company.Equals(), чтобы получить true, если данные объекта совпадают.

По умолчанию он возвращает true только в том случае, если два сравниваемых объекта компании занимают одно и то же место в памяти, и я предполагаю, что ваш CurrentCompany объект не указывает на объект в CompanyList,поэтому SelectedItem устанавливается на null

1 голос
/ 15 августа 2011

Убедитесь, что экземпляр, присвоенный CurrentCompany, является фактическим, содержащимся в CompanyList, а не его дубликатом.

0 голосов
/ 25 августа 2011

Можем ли мы взглянуть на модель представления, пожалуйста?Пока эта информация отсутствует, могут выдаваться следующие подозрения.

  1. Свойство CurrentCompany не является общедоступным или не является свойством.
  2. Модель представления не реализует интерфейс INotifyPropertyChanged.
  3. Установщик свойства CurrentCompany не содержит уведомления о событии PropertyChanged.
0 голосов
/ 15 августа 2011

Вы можете попробовать это: после заполнения CompanyList в вашей ViewModel, установите для CurrentCompany первую компанию или фиктивный элемент, который говорит, или в зависимости от вашего контекста.

...