如何触发组合框项目源的重新加载

How to trigger reload of combobox itemsource

我有一个组合框,我将 XAML 中的组合框与视图模型字典值绑定。

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

但是组合框看起来是空的我不明白为什么会发生这种情况,因为 View Model 变量已经更新并且应该触发组合框的重新加载但那没有发生..

仅供参考: 如果我硬编码字典而不是从服务器下载它,我看不到这个问题 当我第二次加载页面时,我没有看到这个问题

更新

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);
            }
        }

Dictionary 在添加、删除项目或刷新整个列表时不提供通知。

当我们向Dictionary添加新数据时,我们应该能够将null设置为ComboBoxItemsSource。然后设置TestDictionary.ValuesComboBoxItemsSource

您也可以实现自己的 ObservableDictionary。当 Dictionary 改变时, ComboBox 也会改变。 要实现ObservableDictionary,可以参考following question.