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;
    }

残念ながら、2 回目の検索では、.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

await が正しく機能するには、asyncを使用して doSearch() メソッドを定義する必要があります。

次のようにメソッドを宣言してみてください。

private async Task doSearch() {

}
于 2012-11-30T18:49:45.737 に答える