2017-10-11 3 views
0

auslösen Ich habe eine Combobox und ich bin die Combobox in XAML mit Viewmodel Wörterbuch Werte binden.Wie Trigger Reload von Combobox itemsource

Wenn die Seite zum ersten Mal geladen wird, versuche ich, die Wörterbuchwerte vom Server herunterzuladen und auf die Modellvariable der Wörterbuchansicht zu setzen.

Aber die Combobox sieht leer Ich verstehe nicht, warum dies geschieht, weil Ansicht Modell Variable wurde aktualisiert, und das ist, sollte das Nachladen von Combobox auszulösen und das ist nicht passiert ..

FYI: Wenn ich die hard Wörterbuch, anstatt sie vom Server herunterzuladen ich sehe dieses Problem nicht Wenn ich die Seite zweites Mal lade ich dieses Problem nicht

aktualisieren

XAML sehen

<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}}"/> 

Ansicht Modell

 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

Können Sie Ihr 'ViewModel' und' XAML' angeben, wie Sie die Daten der Combobox zuweisen? – AVK

+0

@AVK - Ich habe mein Codebeispiel in Frage aktualisiert –

Antwort

1

Die Dictionary keine Benachrichtigungen bereitstellt, wenn Elemente hinzugefügt bekommen, entfernt oder wenn die gesamte Liste wird aktualisiert.

Wenn wir neue Daten ergänzen die Dictionary, sollten wir in der Lage sein null so einzustellen, dass die ItemsSource der ComboBox. Stellen Sie dann die TestDictionary.Values auf der ComboBox.

Sie können auch Ihre eigenen ObservableDictionary implementieren. Wenn sich die Dictionary ändert, wird die ComboBox geändert. Um die ObservableDictionary zu implementieren, können Sie die following question beziehen.

Verwandte Themen