2011-08-23 5 views
0

Il existe une collection Observable qui se lie à la zone de liste déroulante.WPF Combobox selectedvalue non mise à jour lors de la mise à jour selecteditem

public ObservableCollection<AnyType> AnyTemplates { get; set; } 

Et combobox qui se lient à cette collection:

<ComboBox Name="cmbKeyA" 
      Width="100" 
      SelectedValue="{Binding Path=KeyAName}" 
      ItemsSource="{Binding Path=DataContext.KeyTemplates, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" 
      DisplayMemberPath="Name" 
      SelectedValuePath="Name"/> 

collection First est vide. Puis quand j'ajoute une nouvelle valeur dans la collection, checkBox selectedItem change pour cette valeur. Si je modifie la propriété Name dans l'élément de collection, la propriété combobox selectedItem est modifiée (je vois ce que DisplayMemberPath change en nouvelle valeur), mais la valeur Selected n'est pas modifiée jusqu'à ce que je choisisse de nouveau manuellement cet élément. L'élément de la collection de propriétés Name appelle l'événement PropertyChanged. Pourquoi cela n'a pas fonctionné.

Récapitulatif: lorsque je change NameProperty dans comboxo SelectedItem, la boîte de contrôle SelectedItem est modifiée, mais SelectedValue ne se met pas à jour jusqu'à ce que je la modifie manuellement dans la liste déroulante.

Répondre

0

Essayez d'utiliser le conteneur ItemStyle pour la ComboBox il ressemble à ceci:

Aussi, assurez-vous que vous avez fait tout avec NotifyPropertyChanged et mis en place le DataContext. Une autre chose à ne pas faire est de s'assurer que vous définissez les valeurs initiales dans le modèle de vue sur le chargement d'abord, puis seulement le SelectedItem va changer.

Questions connexes