Довольно много сообщений в этой области, но никто не помогает мне ... вот сценарий: у меня есть два «сезонных» спуска, чтобы имитировать диапазон. Если вы выбираете сезон в начале диапазона один, viewmodele автоматически устанавливает свойство, привязанное к конечному диапазону, к тому же сезону (поэтому по умолчанию он равен одному году, а не диапазону. Вот что выглядит XAML (удалена часть форматирования для удобства чтения атрибута объявления):WPF MVVM Light - привязка SelectedItem не меняется
<ComboBox ItemsSource="{Binding AvailableSeasons, Mode=OneWay}"
SelectedItem="{Binding SelectedBeginRangeSeason, Mode=TwoWay}"
ItemTemplate="{DynamicResource SeasonItemShortFormat}" />
<ComboBox ItemsSource="{Binding AvailableSeasons, Mode=OneWay}"
SelectedItem="{Binding SelectedEndRangeSeason, Mode=TwoWay}"
ItemTemplate="{DynamicResource SeasonItemShortFormat}" />
свойств в модели представления выглядеть следующим образом:
private Season _selectedBeginRangeSeason;
private const string SelectedBeginRangeSeasonPropertyName = "SelectedBeginRangeSeason";
public Season SelectedBeginRangeSeason {
get { return _selectedBeginRangeSeason; }
set {
if (_selectedBeginRangeSeason != value) {
var oldValue = _selectedBeginRangeSeason;
_selectedBeginRangeSeason = value;
RaisePropertyChanged<Season>(SelectedBeginRangeSeasonPropertyName, oldValue, value, true);
}
}
}
private Season _selectedEndRangeSeason;
private const string SelectedEndRangeSeasonPropertyName = "SelectedEndRangeSeason";
public Season SelectedEndRangeSeason {
get { return _selectedEndRangeSeason; }
set {
if (_selectedEndRangeSeason != value) {
Debug.WriteLine("Updating property SelectedEndRangeSeason...");
var oldValue = _selectedEndRangeSeason;
_selectedEndRangeSeason = value;
Debug.WriteLine("Broadcasting PropertyChanged event for property SelectedEndRangeSeason...");
RaisePropertyChanged<Season>(SelectedEndRangeSeasonPropertyName, oldValue, value, true);
}
}
}
private void UpdateSelectedSeasonSelectors() {
// if the end range isn't selected...
if (_selectedEndRangeSeason == null) {
// automatically select the begin for the end range
SelectedEndRangeSeason = _selectedBeginRangeSeason;
}
}
Я проверял конец свойство изменяется как с заявлениями отладки и юнит-тестов, но пользовательский интерфейс не меняется, когда я его выбираю ... не могу понять, что происходит, и посмотрел на это так много разных способов ...
[Этот вопрос] (http://stackoverflow.com/questions/1605939/wpf-combobox-selecteditem-not-updating) звучит похоже на ваш. Вы попробовали ответ на этот вопрос? – RMart