WP8 LongListSelector – 重新分配ItemsSource无效

我正在使用新的Windows Phone 8 LongListSelector控件,它将ItemsControl分配给List<Group>如下所示:

  List<Group> searchResults; async void doSearch() { this.searchResults = await SearchHelper.Instance.getSearchResults(txtSearchTerm.Text); longList.ItemsSource = this.searchResults; } 

不幸的是,我第二次搜索时,重新设置.ItemsSource属性没有任何效果,控件只显示旧的List。

如何更改绑定?

似乎重新分配longList.ItemsSource没有任何影响,无论这是一个bug还是设计我都说不出来。

但是,一个简单的解决方法是简单地使用ObservableCollection>然后使用此集合而不是重新分配ItemsSource。

示例代码:

  ObservableCollection> searchResults = new ObservableCollection>(); public SearchPage() { InitializeComponent(); longList.ItemsSource = this.searchResults; } async void doSearch() { List> tempResults = await SearchHelper.Instance.getSearchResults(txtSearchTerm.Text); // Clear existing collection and re-add new results this.searchResults.Clear(); foreach (Group grp in tempResults ) { this.searchResults.Add(grp); } } 

有时将ItemsSource设置为null然后立即设置为结果会有所帮助。

您需要使用async定义doSearch()方法以使await正常运行。

尝试声明这样的方法:

 private async Task doSearch() { }