9

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

    List<Group<PlacePoint>> searchResults; 

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

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

如何更改绑定?

4

3 回答 3

9

似乎重新分配 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);
        }
    }
于 2012-11-30T18:16:06.177 回答
0

有时它有助于将 ItemsSource 设置为 null,然后立即设置为您的结果。

于 2012-11-30T21:11:22.990 回答
-1

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

尝试像这样声明你的方法:

private async Task doSearch() {

}
于 2012-11-30T18:49:45.737 回答