Silverlight DataGrid does not have the built-in paging facility. So here is a small piece of code to implement paging in Silverlight DataGrid. For this custom paging

Demo

1. Define the following Properties and Variables
public partial class Page : UserControl

{

//Property to hold the value of total records

public int TotalRow { get; set; }

//Property to hold the value of page size

public int PageSize { get; set; }

//Number of rows that the DataGrid

int totalRowsInGrid = 0;

2. Initialize the values
public Page()

{

InitializeComponent();

//Initialize the page size

PageSize = 10;

//Get the desired data

user = User.Get();

//Set the TotalRow cout to the number of rows returned for data

TotalRow = user.Count;

BindGrid(1);

DoPaging(this.PageSize, TotalRow);

}

3. Create a method to get the desired range of data based on page number
/// <summary>

/// Returns paged data based on page number

/// </summary>

/// <param name="pageNumber"></param>

/// <returns></returns>

private List<User> GetData(int pageNumber)

{

int Pagestart = (pageNumber - 1) * this.PageSize;

TextBlockStartPageNumber.Text = (Pagestart+1).ToString();

TextBlockEndPageNumber.Text = (Pagestart + totalRowsInGrid).ToString();

TextBlockTotalRecords.Text = TotalRow.ToString();

int i = TotalRow;

List<User> PagedData;

//List<User> PagedData = user.Skip((pageNumber - 1) * PageSize).Take(PageSize) as List<User>;

//List<YourObject> PageedData = FullList.Skip((PageNumber - 1) * PageSize).Take(PageSize).ToList();

if ((i - ((pageNumber - 1) * this.PageSize)) >= this.PageSize)

PagedData = user.GetRange(Pagestart, this.PageSize);

else

PagedData = user.GetRange(Pagestart, (i % this.PageSize));

return PagedData;

}

4. Bind the DataGrid
/// <summary>

/// Bind grid to the desired range of records

/// </summary>

/// <param name="PageNumber"></param>

private void BindGrid(int PageNumber)

{

if (this.PageSize * PageNumber > this.TotalRow)

{

totalRowsInGrid = this.TotalRow % this.PageSize;

}

else

{

totalRowsInGrid = this.PageSize;

}

dataGridPaging.ItemsSource = GetData(PageNumber);

}

5. Write the click event for the paging buttons
/// <summary>

/// Handles the click event of buttons having page numbers

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

void btn_Click(object sender, RoutedEventArgs e)

{

Button btn = sender as Button;

int iPageNumber = Convert.ToInt32(btn.Content.ToString());

BindGrid(iPageNumber);

}

That’s all you are done with the custom paging in Silverlight DataGrid.