Выбранное значение WPF Combobox не обновляется при обновлении выбранного элемента
Существует коллекция Observable, которая привязывается к combobox.
public ObservableCollection<AnyType> AnyTemplates { get; set; }
И выпадающий список, который привязывается к этой коллекции:
<ComboBox Name="cmbKeyA"
Width="100"
SelectedValue="{Binding Path=KeyAName}"
ItemsSource="{Binding Path=DataContext.KeyTemplates, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
DisplayMemberPath="Name"
SelectedValuePath="Name"/>
Первая коллекция пуста. Затем, когда я добавляю новое значение в коллекцию, checkBox selectedItem меняется на это значение. Если я изменяю свойство Name в Item Item, комбинированный список selectedItem изменяется (я вижу, что DisplayMemberPath изменяется на новое значение), но Выбранное значение не изменяется, пока я не выберу этот элемент вручную. Элемент коллекции свойства Name вызывает событие PropertyChanged. Почему это не сработало.
Резюме: когда я изменяю NameProperty в comboxo SelectedItem программно, комбинированный список SelectedItem изменяется, но SelectedValue не обновляется, пока я вручную не изменю его в комбинированном окне снова.
1 ответ
Попробуйте использовать Контейнер ItemStyle для ComboBox, чтобы он выглядел так:
<ComboBox Name="cmbKeyA"
Width="100"
SelectedValue="{Binding Path=KeyAName}"
ItemsSource="{Binding AnyTemplates}"
DisplayMemberPath="Name"
SelectedValuePath="Name">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="IsSelected" Value="{Binding Path=IsCurrent, Mode=TwoWay}"/>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
Также убедитесь, что вы сделали все с NotifyPropertyChanged и настроили DataContext. Еще одна вещь, которую не стоит делать, - сначала убедиться, что вы установили начальные значения в модели представления при загрузке, а затем изменится только SelectedItem.