You can make use of PagedCollectionView's PageChanging and PageChanged event: Store the SelectedItems in PagedChanging event and set the SelectedItems back in PagedChanged event.
PagedCollectionView view;
List<course> selectedCourses = new List<course>();
public void OnLoadCompleted(LoadOperation<course> courses)
{
view = new PagedCollectionView(courses.Entities.OrderBy(c => c.CourseID));
view.PageSize = 5;
page.Source = view;
datagrid2.ItemsSource = view;
view.PageChanging += new EventHandler<system.componentmodel.pagechangingeventargs>(view_PageChanging);
view.PageChanged += new EventHandler<eventargs>(view_PageChanged);
datagrid2.SelectedIndex=-1;
}
void view_PageChanged(object sender, EventArgs e)
{
view.MoveCurrentToPosition(-1);
if (selectedCourses.Count <= 0)
return;
for (int i = 0; i < view.Count; i++)
{
if (selectedCourses.Contains(view[ i ] as Course))
datagrid2.SelectedItems.Add(view[ i ]);
}
}
void view_PageChanging(object sender, System.ComponentModel.PageChangingEventArgs e)
{
if (datagrid2.SelectedItems.Count > 0)
{
for (int i = 0; i < datagrid2.SelectedItems.Count; i++)
{
if (selectedCourses.Contains(datagrid2.SelectedItems[ i ] as Course))
continue;
selectedCourses.Add(datagrid2.SelectedItems[ i ] as Course);
}
}
}</eventargs></system.componentmodel.pagechangingeventargs></course></course></course>