我正在使用新的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属性没有任何效果,控件只显示旧列表。
如何更改绑定?
答案 0 :(得分:9)
似乎重新分配longList.ItemsSource没有任何影响,无论这是一个bug还是设计我不能说。
但是,一个简单的解决方法就是使用ObservableCollection&gt;相反,然后使用此集合而不是重新分配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);
}
}
答案 1 :(得分:0)
有时将ItemsSource设置为null然后立即设置为结果会有所帮助。
答案 2 :(得分:-1)
您需要使用 async 定义doSearch()方法,以便等待正常运行。
尝试声明这样的方法:
private async Task doSearch() {
}