如何触发重新加载组合框项目源
问题描述:
我有一个组合框,我使用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);
}
}
答
的Dictionary
不提供通知时,项目将添加,删除,或当整个列表被刷新。
当我们的新数据添加到Dictionary
,我们应该能够设置null
到ComboBox
的ItemsSource
。然后将TestDictionary.Values
设置为ComboBox
的ItemsSource
。
您也可以实施您自己的ObservableDictionary
。当Dictionary
更改时,ComboBox
将被更改。 要实施ObservableDictionary
,您可以参考following question。
你可以发布你的'ViewModel'和'XAML'你如何分配数据到Combobox? – AVK
@AVK - 我已经更新了我的代码示例 –