Выбранное значение 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.

Другие вопросы по тегам