2017-10-11 11 views
0

J'ai une liste déroulante et je lie la liste déroulante en XAML avec les valeurs du dictionnaire viewmodel. Lorsque la page est chargée pour la première fois, j'essaie de télécharger les valeurs du dictionnaire et du serveur et de le définir à la variable du modèle de vue du dictionnaire.Comment déclencher le rechargement de la liste d'objets combobox

Mais le combobox semble vide, je ne comprends pas pourquoi cela se produit parce que l'affichage des variables modèle a été mis à jour et c'est censé déclencher la recharge de combobox et c'est pas le cas ..

Pour votre information: Si je hardcode la dictionnaire plutôt que de le télécharger à partir du serveur, je ne vois pas ce problème Quand je charge la page deuxième fois que je ne vois pas ce problème

Mise à jour

XAML

<ComboBox x:Name=“testBox” Margin=“0,0,0,0” PlaceholderText="{StaticResource testText}” ItemsSource="{Binding TestDictionary.Values}” SelectedValue="{Binding DictionaryValue, Mode=TwoWay}" IsEnabled="{Binding IsItLoading, Converter={StaticResource InverseBooleanConverter}}"/> 

Voir modèle

 private Dictionary<string, string> testDictionary; 


public Dictionary<string, string> TestDictionary 
     { 
      get 
      { 
       if (this.testDictionary == null) 
       { 
        this.testDictionary = new Dictionary<string, string>(); 
       } 

       return this.testDictionary; 
      } 

      set 
      { 
       this.Set(() => this.TestDictionary, ref this.testDictionary, value); 
      } 
     } 
+1

Pouvez-vous publier vos 'ViewModel' et' XAML' comment vous assignez les données à Combobox? – AVK

+0

@AVK - J'ai mis à jour mon exemple de code en question –

Répondre

1

Le Dictionary ne lorsque des éléments sont ajoutés, supprimés ne fournit pas les notifications, ou lorsque la liste entière est actualisée.

Lorsque nous ajoutons de nouvelles données à l'Dictionary, nous devrions être en mesure de mettre null au ItemsSource du ComboBox. Définissez ensuite TestDictionary.Values sur ItemsSource sur ComboBox.

Vous pouvez également créer votre propre ObservableDictionary. Lorsque les modifications Dictionary, le ComboBox sera modifié. Pour implémenter le ObservableDictionary, vous pouvez vous référer au following question.