I have a GridView where the ItemsSource is bound to the PagedSource property of a DataPager. The DataPager ItemsSource is bound to an EntityDataSource. The problem is that this is blocking my UI thread. The GridView has a "DataLoadMode" property which can be set to Asynchronous... but the pager doesn't. How would I go about loading the data to the pager asynchronously? I tried doing this in another thread but I keep getting a cross-thread exception even though I use the dispatcher to set the property to which the pager is bound.
<telerik:RadGridView x:Name="RadGridView1"                                         Grid.Row="0"                                         Margin="5,5,5,0"                                         HorizontalAlignment="Stretch"                                         VerticalAlignment="Stretch"                                         AlternateRowBackground="LightBlue"                                         AlternationCount="2"                                         AutoGenerateColumns="False"                                         CanUserDeleteRows="False"                                         CanUserFreezeColumns="False"                                         CanUserInsertRows="False"                                         DataLoadMode="Asynchronous"                                         GroupRenderMode="Nested"                                         IsReadOnly="True"                                         ItemsSource="{Binding ElementName=DataPager1,                                                               Path=PagedSource}"                                         RowIndicatorVisibility="Collapsed"                                         ShowGroupPanel="False"                                         telerik:StyleManager.Theme="Summer">                        <telerik:RadGridView.Columns>                            <telerik:GridViewDataColumn Width="60"                                                        DataMemberBinding="{Binding StoreNumber}"                                                        Header="Store"                                                        ShowDistinctFilters="True"                                                        ShowFieldFilters="False"                                                        TextAlignment="Center" />                            <telerik:GridViewDataColumn Width="80"                                                        DataFormatString="dd-MMM-yyyy"                                                        DataMemberBinding="{Binding ASNDate}"                                                        Header="Ship Date"                                                        ShowDistinctFilters="False"                                                        SortingState="Descending"                                                        TextAlignment="Center" />                            <telerik:GridViewDataColumn Width="Auto"                                                        MinWidth="80"                                                        DataMemberBinding="{Binding PONumber}"                                                        Header="PO"                                                        ShowDistinctFilters="False"                                                        TextAlignment="Center" />                            <telerik:GridViewDataColumn Width="80"                                                        DataFormatString="dd-MMM-yyyy"                                                        DataMemberBinding="{Binding PODate}"                                                        Header="PO Date"                                                        ShowDistinctFilters="False"                                                        TextAlignment="Center" />                            <telerik:GridViewDataColumn Width="Auto"                                                        MinWidth="80"                                                        DataMemberBinding="{Binding InvoiceNumber}"                                                        Header="Invoice"                                                        ShowDistinctFilters="False"                                                        TextAlignment="Center" />                            <telerik:GridViewDataColumn Width="Auto"                                                        DataMemberBinding="{Binding ToteID}"                                                        Header="Tote"                                                        ShowDistinctFilters="True"                                                        TextAlignment="Center">                                <telerik:GridViewDataColumn.CellTemplate>                                    <DataTemplate>                                        <TextBlock Width="Auto"                                                   Height="Auto"                                                   HorizontalAlignment="Center"                                                   VerticalAlignment="Center">                                            <Hyperlink Click="OnToteClick" Tag="{Binding}">                                                <TextBlock Width="Auto"                                                           Height="Auto"                                                           HorizontalAlignment="Center"                                                           VerticalAlignment="Center"                                                           Text="{Binding ToteID}" />                                            </Hyperlink>                                        </TextBlock>                                    </DataTemplate>                                </telerik:GridViewDataColumn.CellTemplate>                            </telerik:GridViewDataColumn>                            <telerik:GridViewDataColumn Width="80"                                                        DataFormatString="dd-MMM-yyyy"                                                        DataMemberBinding="{Binding Closed}"                                                        Header="Completed"                                                        ShowDistinctFilters="False" />                            <telerik:GridViewDataColumn Width="Auto"                                                        DataMemberBinding="{Binding ClosedByName}"                                                        Header="Complete By"                                                        ShowDistinctFilters="True"                                                        ShowFieldFilters="False"                                                        TextAlignment="Center" />                        </telerik:RadGridView.Columns>                    </telerik:RadGridView>                    <telerik:RadDataPager x:Name="DataPager1"                                          Grid.Row="1"                                          Width="{Binding ActualWidth,                                                          ElementName=RadGridView1}"                                          Margin="5,0,5,5"                                          DisplayMode="FirstLastPreviousNextNumeric"                                          PageSize="{Binding PageSize,                                                             Mode=TwoWay}"                                          Source="{Binding ShipmentData}"                                          telerik:StyleManager.Theme="Summer" />
public class ShipmentsViewModel : ViewModelBase    {        private readonly TIMS.Data.TIMSContext ctx =new Data.TIMSContext();        public ShipmentsViewModel()        {                    }        #region Properties        private int PageSizeValue = 20;        public int PageSize        {            get { return PageSizeValue; }            set            {                SetPropertyValue((() => PageSize), ref PageSizeValue, value);            }        }        private QueryableEntityCollectionView<TIMS.Data.Entities.ToteView> ShipmentDataValue;        public QueryableEntityCollectionView<TIMS.Data.Entities.ToteView> ShipmentData        {            get {                     return ShipmentDataValue;             }            private set            {                SetPropertyValue((() => ShipmentData), ref ShipmentDataValue, value);            }        }        #endregion        #region Methods        public override void OnNavigatedTo(Uri view, object data)        {            try            {                IsBusy = true;                System.Threading.ThreadPool.QueueUserWorkItem(delegate                {                    var shipments = new QueryableEntityCollectionView<Data.Entities.ToteView>(((IObjectContextAdapter)ctx).ObjectContext, "ToteViews");                    if (App.Store != null)                    {                        shipments.FilterDescriptors.Add(new FilterDescriptor("StoreNumber", FilterOperator.IsEqualTo, App.Store.Value, false));                    }                    App.Current.Dispatcher.Invoke(new Action(delegate                    {                        ShipmentDataValue = shipments;                        IsBusy = false;                    }));                });            }            catch (Exception e)            {                App.Current.Dispatcher.BeginInvoke(new Action(delegate                {                    var dlg = new ChildWindows.ErrorDialog("0012:  An unknown error occured.");                    App.LogError(e);                    dlg.ShowDialog();                    IsBusy = false;                }));            }        }        #endregion        #region Commands        #endregion    }