2009-03-10 10 views
0

Je suis en train de lier un ComboBox aux données d'un objet. L'objet contient une liste qui correspond aux états autorisés et une chaîne qui représente sa valeur actuelle. Le problème que j'ai est que quand le formulaire le charge correctement place la valeur de la liste déroulante à sa valeur actuelle mais je suis incapable de changer la valeur à n'importe quoi d'autre. Si je clique sur la liste déroulante et que je choisis une nouvelle valeur, elle ferme la liste déroulante mais conserve la valeur d'origine.ComboBox WPF Reliure Immuable

Les comboboxs sont chacun dans une rangée dans une grille de données et la zone de liste déroulante est contenu dans le RowDetailsTemplate pour la grille de données.

XAML:

<ComboBox 
    x:Name="cmbStatus" 
    ItemsSource="{Binding Path=AllowedStateValues}" 
    SelectedItem="{Binding Path=State}"  
    Height="20" 
    Width="100" /> 

Répondre

0

État decleration:

private string _state; 
    public string State { 
     get { return _state; } 
     set 
     { 
      if (AllowedStateValues != null && AllowedStateValues.Contains(value)) 
      { 
       _state = value; 

      } 
     } 

    } 

Je n'ai pas un événement soulevée lorsqu'il est changé, mais il semble aussi ne pas appeler le poseur lorsque vous modifiez le combobox

1

Essayez de définir la liaison Mode à TwoWay. Si cela ne fonctionne pas, utilisez PresentationTraceSources.TraceLevel propriété à Haute, pour obtenir tous les détails.

+0

J'ai essayé Mode = TwoWay et obtenir aucun changement. Je ne suis pas sûr de ce que PresentationTraceSources.TraceLevel = "High" est censé accomplir. – Stephan

+0

Il ne fera que suivre toutes les informations importantes concernant l'ensemble de reliure. Il pourrait y avoir un indice vers la source du problème. – orcun

0

Je viens d'avoir le même problème. Il s'avère que mon problème était dans mon override Equals des éléments liés. Vérifiez et assurez-vous que plusieurs objets qui ne sont pas égaux ne sont pas comparés comme égaux.