0

Silverlightプロジェクトでは、ケースのリスト(DataGrid)を含むビューがあります。リストはDataPagerでページングされます。私のソースコレクションはPagedCollectionViewにラップされています。

アイテムが作成されると、リストに追加され、DataGridでselecteditemとして設定されます。リストの並べ替えによっては、これは別のページで、データページャーで現在アクティブになっている可能性があります。

データページャーを新しく追加されたアイテムのページに移動するにはどうすればよいですか?

    public PagedCollectionView<CaseDTO> Cases { get; set; }

    public void CreateCase()
    {
        var requestDispatcher = container.GetInstance<IAsyncRequestDispatcher>();
        requestDispatcher.Add(GetRequest<CreateCaseRequest>());
        requestDispatcher.Add(GetRequest<GetCasesRequest>());

        requestDispatcher.ProcessRequests(
            responses =>
            {
                selectedCaseId = responses.Get<CreateCaseResponse>().CaseId;
                UpdateCases(responses.Get<GetCasesResponse>());

                Cases.MoveToPageOf(SelectedCase); // How to implement?
            },
            ex => { throw new Exception(ex.ToString()); }
            );
    }

Cases.MoveToPageOf(SelectedCase); //どのように実装しますか?

4

1 に答える 1

0

最善の方法は、ページを検索することでした。私はまさにそれを行う次の拡張メソッドを作成しました:

public static class PagedCollectionViewExtension
{
    public static bool MoveToPageOf(this PagedCollectionView collectionView, object item)
    {
        int pageSearched = 0;

        while (pageSearched < collectionView.PageSize)
        {
            if (collectionView.IndexOf(item) != -1)
                return true;

            collectionView.MoveToNextPage();
            pageSearched++;
        }

        return false;
    }
}
于 2010-02-10T19:30:41.723 に答える