在 Silverlight 项目中,我有一个包含案例列表(DataGrid)的视图。该列表使用 DataPager 进行分页。我的源集合包含在 PagedCollectionView 中。
创建项目后,它会添加到列表中并设置为 DataGrid 中的选定项目,根据列表排序,这可能位于数据分页器中当前活动的另一个页面上。
如何将数据分页器移动到新添加项目的页面?
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); // 如何实现?
我发现最好的方法就是搜索页面。我制作了以下扩展方法来做到这一点:
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;
}
}