我正在使用新的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属性无效,该控件仅显示旧的List。

如何更改绑定(bind)?

最佳答案

似乎重新分配longList.ItemsSource似乎没有任何作用,无论是Bug还是我不能说。

但是,一个简单的解决方法是直接使用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);
        }
    }

10-06 03:47