WPF MVVM ComboBox SelectedItem или SelectedValue, не работающий

Вы пытались выбрать метод и нажать «Отладка»? или вы пытались выполнить целые тесты, а затем выбрать свой метод правой кнопкой мыши и отладки?

40
задан Nathan 27 August 2012 в 22:36
поделиться

6 ответов

Вы попытались реализовать INotifyPropertyChanged в Вашем viewmodel и затем повышаете PropertyChanged событие, когда эти SelectedItem установлен?

, Если это сам по себе не зафиксирует его, то Вы будете в состоянии вручную повысить PropertyChanged событие сами при навигации назад к странице, и этого должно быть достаточно, чтобы заставить WPF перерисовывать себя и показывать корректный выбранный пункт.

27
ответ дан Orion Edwards 27 November 2019 в 01:10
поделиться

Я заметил это поведение прежде также. Я заметил, что свойство SelectedIndex не вызывает ту же ошибку. Если можно реструктурировать ViewModel, чтобы представить индекс выбранного пункта и связать, в который, необходимо быть хорошими для движения.

3
ответ дан Abe Heidebrecht 27 November 2019 в 01:10
поделиться

Это мог быть способ, которым Вы применяете DataContext к Странице. В WPF каждый раз Вы перешли к Странице, все повторно инициализируется, конструктор становится вызванным, загруженные методы, все. таким образом, при установке DataContext в Представлении, Вы будете несомненно сдувать тот SelectedItem, который выбрал пользователь. Чтобы избежать, чтобы использовали свойство KeepAlive Ваших страниц.

<Page KeepAlive="True" ...>
   ...
</Page>

Это приведет только к событию Loaded, запускаемому при навигации назад к странице, которую Вы уже посетили. Таким образом, необходимо будет удостовериться установку DataContext на, Инициализируют (или внешне или в конструкторе), а не Загрузка.

Однако это будет только работать на тот экземпляр Страницы. Если Вы переместитесь к новому экземпляру той страницы по нему, то конструктора вызовут снова.

0
ответ дан markti 27 November 2019 в 01:10
поделиться

У меня были подобные проблемы, и это было решено путем проверки, что я реализовывал IEquatable правильно. Когда привязка происходит, она пытается видеть если соответствие объектов, так удостоверьтесь, что Вы правильно реализуете свою проверку равенства.

11
ответ дан 27 November 2019 в 01:10
поделиться

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

public MyObject SelectedObject
 {
      get
      {
          Objects.find(x => x.id == _selectedObject.id)
          return _selectedObject;
      }
      set
      {
           _selectedObject = value;
      }
 }

Надеюсь, это поможет.

2
ответ дан 27 November 2019 в 01:10
поделиться

ComboBox.SelectionBoxItem.ToString ()

0
ответ дан 27 November 2019 в 01:10
поделиться
Другие вопросы по тегам:

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