2010-06-28 5 views
0

Mise à jour:WPF ComboBox liant

J'ai inclus quelques diagnostics dans la propriété SelectedValue (diagnostics:PresentationTraceSources.TraceLevel=High) et je pense que je peux voir la question, même si je ne sais pas comment le résoudre. Les diagnostics montrent

System.Windows.Data Warning: 76 : BindingExpression (hash=16001149): TransferValue - got raw value '3' 
    System.Windows.Data Warning: 80 : BindingExpression (hash=16001149): TransferValue - implicit converter produced '3' 
    System.Windows.Data Warning: 85 : BindingExpression (hash=16001149): TransferValue - using final value '3' 
    System.Windows.Data Warning: 86 : BindingExpression (hash=16001149): **Update - got raw value <null>** 
    System.Windows.Data Warning: 90 : BindingExpression (hash=16001149): **Update - using final value <null>** 
    System.Windows.Data Warning: 98 : BindingExpression (hash=16001149): SetValue at level 1 to LookupModelBase (hash=57292143) using ReflectPropertyDescriptor(PK): <null> 
    System.Windows.Data Warning: 91 : BindingExpression (hash=16001149): Got ValueChanged event from LookupModelBase (hash=57292143) 
    System.Windows.Data Warning: 85 : BindingExpression (hash=40869743): TransferValue - using final value ObservableCollection`1 (hash=64658589 Count=4) 

de sorte que SelectedValue est défini sur null pour une raison quelconque.

Est-ce que quelqu'un a surmonté ce problème?

Merci

Salut,

Suite à my previous post et de faire cela un peu plus clair que mes divagations précédentes, je pense que la question est la suivante; Pourquoi un affichage de zone de liste déroulante est-il défini sur vide lorsqu'une autre propriété est modifiée (en raison de OnPropertyChanged), même si la valeur sous-jacente réelle n'est pas modifiée? Si je modifie un champ dans le même enregistrement, la liste déroulante s'affiche comme vide, mais si je m'éloigne et reviens, la valeur est renvoyée?

Le xaml est comme suit;

  ItemsSource="{Binding TrialParentValues, Mode=OneWay}" 
      SelectedItem="{Binding TrialParentObj, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, Mode=TwoWay}"        
      DisplayMemberPath="Description"    
      SelectedValuePath="PK" 
      SelectedValue="{Binding TrialParentObj.PK}" 

Merci

+0

J'ai ajouté un lien vers votre message précédent, pouvez-vous vérifier qu'il est le bon? – slugster

Répondre

0

utiliser une liaison sur SelectedValue en combinaison avec SelectedValuePath ou une liaison sur SelectedItem

Ne pas utiliser à la fois sur votre combobox!

Dans votre cas, je vous suggère de supprimer la liaison SelectedItem.

+0

J'ai d'abord essayé cela mais je n'ai pas pu obtenir la mise à jour du tout. J'ai suivi ce conseil http://stackoverflow.com/questions/247413/wpf-combobox-selectedvalue-not-updating-from-binding-source et j'ai eu plus de succès mais toujours le problème ci-dessus. – pilsdumps

+0

La liaison de valeur sélectionnée est interrompue lorsque vous modifiez ItemsSource. Thats un problème méchant. S'il vous plaît essayez de garder votre ItemsSource comme une ressource ou assurez-vous que ce n'est pas dynamique. Si c'est dynamique, considérez un CollectionViewSource. – Arcturus

+0

Ok, merci pour le pointeur. Ce qui me dérange vraiment, c'est que j'ai réussi à faire fonctionner cela avec succès pour d'autres propriétés, où la modification de la propriété ItemsSource ne casse pas la liaison. Cependant, malgré un certain nombre d'heures de recherche, je n'arrive pas à comprendre pourquoi cela ne fonctionne pas dans le cas que j'ai décrit. – pilsdumps