WP8 LongListSelector - 重新分配ItemsSource无效

时间:2012-11-30 18:12:37

标签: c# xaml windows-phone windows-phone-8

我正在使用新的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属性没有任何效果,控件只显示旧列表。

如何更改绑定?

3 个答案:

答案 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() {

}