2017-10-11 134 views
0

我有一个组合框,我使用viewmodel字典值绑定XAML中的组合框。如何触发重新加载组合框项目源

第一次加载页面时,我试图从服务器下载字典值并将其设置为字典视图模型变量。

但是,组合框看上去是空的,我不明白为什么会这样,因为视图模型变量已经更新,这就是应该触发组合框的重载和那没有发生..

FYI: 如果我硬编码而字典不是从服务器下载它,我没有看到这个问题 当网页加载完毕后第二次我没有看到这个问题

更新

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

视图模型

 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

你可以发布你的'ViewModel'和'XAML'你如何分配数据到Combobox? – AVK

+0

@AVK - 我已经更新了我的代码示例 –

回答

1

Dictionary不提供通知时,项目将添加,删除,或当整个列表被刷新。

当我们的新数据添加到Dictionary,我们应该能够设置nullComboBoxItemsSource。然后将TestDictionary.Values设置为ComboBoxItemsSource

您也可以实施您自己的ObservableDictionary。当Dictionary更改时,ComboBox将被更改。 要实施ObservableDictionary,您可以参考following question