У меня есть два комбо «Make» и «Model», у них есть свойства SelectedValue, привязанные к объекту Vehicle с ModelID и MakeID.WPF Binding: Refreshing Binding после перезагрузки комбо из базы данных
Heres модели ...
<ComboBox DisplayMemberPath="Description" ItemsSource="{Binding Path=ModelSpecs}" SelectedValue="{Binding Path=Vehicle.ModelID}" SelectedValuePath="ID" />
Пользователь может искать автомобиль в отдельном контроле и это обменивает вне базовый объект Vehicle. Все работает нормально, если вы переключаетесь между транспортными средствами одного и того же Make, однако, если вносить изменения, я ухожу в базу данных и перезагружаю коллекцию ModelSpec. Компост dosnt отображает описание модели, потому что привязка должна быть обновлена.
В настоящее время я должен добавить это в конце метода, который перезагружает Модели - он отлично работает, но не является особенно элегантным решением.
var modelID = ViewModel.Vehicle.ModelID;
ViewModel.Vehicle.ModelID = string.Empty;
ViewModel.Vehicle.ModelID = modelID;
В основном я просто запуская INotifyPropertyChanged ...
private string _modelID;
public string ModelID
{
get { return _modelID; }
set
{
if (_modelID == value) return;
_modelID = value;
OnPropertyChanged("ModelID");
}
}
Я могу думать о нескольких подобных безвкусных решениях - но должен быть лучше ?! Любая помощь ценится!
Его код и его теги предполагают, что он использует Model-View-ViewModel, что сделало бы это no-no. –