我使用的是全新的Windows Phone 8 LongListSelector
控制,它有ItemsControl
分配到一个List<Group<object>>
像这样:
List<Group<PlacePoint>> searchResults;
async void doSearch()
{
this.searchResults = await SearchHelper.Instance.getSearchResults(txtSearchTerm.Text);
longList.ItemsSource = this.searchResults;
}
不幸的是,我搜索了第二次,重新设置.ItemsSource属性没有任何效果和控制只显示旧列表。
我怎样才能更改绑定?
这似乎是重新分配longList.ItemsSource没有任何影响,这是否是一个错误或设计,我不能说。
然而,一个简单的解决方法就是使用一个ObservableCollection>代替,然后用此集合,而不是重新分配的ItemsSource工作。
示例代码:
ObservableCollection<Group<PlacePoint>> searchResults = new ObservableCollection<Group<PlacePoint>>();
public SearchPage()
{
InitializeComponent();
longList.ItemsSource = this.searchResults;
}
async void doSearch()
{
List<Group<PlacePoint>> tempResults = await SearchHelper.Instance.getSearchResults(txtSearchTerm.Text);
// Clear existing collection and re-add new results
this.searchResults.Clear();
foreach (Group<PlacePoint> grp in tempResults )
{
this.searchResults.Add(grp);
}
}
有时,它帮助后立即设置的ItemsSource为null,然后给你的结果。
您需要定义使用异步的等待才能正常工作的doSearch()方法。
尝试宣告你这样的方法:
private async Task doSearch() {
}