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

时间:2017-10-11 17:12:34

标签: xaml combobox mvvm-light uwp-xaml xamarin.uwp

我有一个组合框,我将XAML中的组合框与viewmodel字典值绑定。

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

但是组合框看起来很空洞我不明白为什么会发生这种情况,因为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);
            }
        }

1 个答案:

答案 0 :(得分:1)

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

当我们向Dictionary添加新数据时,我们应该能够将null设置为ItemsSource的{​​{1}}。然后将ComboBox设置为TestDictionary.Values的{​​{1}}。

您还可以实施自己的ItemsSourceComboBox更改后,ObservableDictionary将会更改。 要实施Dictionary,您可以参考following question