The problem is due to the binding occuring on the Page_Load event.
For this to work as expected, the binding needs to happen in the DataPager's OnPreRender event, not in the Page_Load.
Source:
<asp:DataPager ID="ListPager" PagedControlID="MyList" runat="server" PageSize="10"
OnPreRender="ListPager_PreRender">
<Fields>
<asp:NumericPagerField />
</Fields>
</asp:DataPager>
Code Behind:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ListPager_PreRender(object sender, EventArgs e)
{
MyList.DataSource = GetSomeList();
MyList.DataBind();
}