or

<telerik:RadGridView AutoExpandGroups="True" AutoGenerateColumns="False" CanUserDeleteRows="False" CanUserFreezeColumns="False" CanUserInsertRows="False" CanUserResizeColumns="True" CanUserSortColumns="True" EnableColumnVirtualization="True" EnableRowVirtualization="True" FontSize="16" FontWeight="Bold" IsReadOnly="True" MouseDoubleClick="ReadsGrid_MouseDoubleClick" Name="ReadsGrid" RowStyleSelector="{StaticResource StyleSelector}" SelectionChanged="ReadsGrid_SelectionChanged" SelectionUnit="FullRow" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" ShowGroupFooters="True" ToolTip="Matching Reads"> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn DataMemberBinding="{Binding Plate, Mode=OneWay}" Header="Plate" Width="*" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding State, Mode=OneWay}" Header="State" Width="75" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding TimeStamp, Mode=OneWay, Converter={StaticResource DateConverter}}" Header="Date & Time" Width="175" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding GPSInformation.Position.Latitude, Converter={StaticResource CoordConverter}, ConverterParameter=NS}" Header="Latitude" Width="142" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding GPSInformation.Position.Longitude, Converter={StaticResource CoordConverter}, ConverterParameter=EW}" Header="Longitude" Width="142" /> </telerik:RadGridView.Columns> </telerik:RadGridView>private void ReadsGrid_MouseDoubleClick( object sender, MouseButtonEventArgs e ) { if ( OkToSwitchToRecordDetails ) { TabItem searchTabItem = (TabItem) Parent; TabControl tabControl = (TabControl) searchTabItem.Parent; TabItem recordDetailsTabItem = FindTab( typeof( EditRecordDetails ) ); recordDetailsTabItem.IsSelected = true; } e.Handled = true; } private void ReadsGrid_SelectionChanged( object sender, SelectionChangeEventArgs e ) { ReadViewModel read = (ReadViewModel) ReadsGrid.SelectedItem; ReadsGrid.ScrollIndexIntoView( ReadsGrid.Items.IndexOf( read ) ); HavePrevRecord = ReadsGrid.Items.IndexOf( read ) > 0; HaveNextRecord = ReadsGrid.Items.IndexOf( read ) < ( Reads.Count - 1 ); RecordDetailsControl.DisplayRead( read ); e.Handled = true; }private void NextButton_Click( object sender, RoutedEventArgs e ) { try { SearchControl.NextRecord( LastRecord ); } catch ( ObjectNotFoundException ex ) { string msg = MessageGenerator.ExceptionMessage( "Error getting next record: ", ex ); Log.Error( msg ); CarSystemMessageBox.Show( msg, "Error Getting Next Record" ); } // Mark event handled e.Handled = true; } private void PrevButton_Click( object sender, RoutedEventArgs e ) { try { SearchControl.PrevRecord( LastRecord ); } catch ( ObjectNotFoundException ex ) { string msg = MessageGenerator.ExceptionMessage( "Error getting next record: ", ex ); Log.Error( msg ); CarSystemMessageBox.Show( msg, "Error Getting Next Record" ); } // Mark event handled e.Handled = true; }public void NextRecord( ReadViewModel read ) { // Figure out the index of the last object in the ReadsGrid RadGridView's Items collection int lastObj = ReadsGrid.Items.Count - 1; // Get the index of this object in the ReadsGrid's Items collection. int idxRead = ReadsGrid.Items.IndexOf( read ); // The next record is the next one in the ReadsGrid's Items collection, if there is one. if ( idxRead < lastObj ) { // Set HaveNextRecord and HavePrevRecord HavePrevRecord = true; HaveNextRecord = idxRead < lastObj; // Select the next record. read = ReadsGrid.Items[ idxRead + 1 ] as ReadViewModel; } else { // There isn't a next record. Set HaveNextRecord and HavePrevRecord HaveNextRecord = false; HavePrevRecord = idxRead > 0; } // Select the Read & scroll it into view ReadsGrid.SelectedItem = read; ReadsGrid.ScrollIntoView( read ); } public void PrevRecord( ReadViewModel read ) { // Declare some variables we will need to use int idxRead = -1; // Get the index of this object in the ReportRows array. idxRead = ReadsGrid.Items.IndexOf( read ); // The previous record is the previous one in the ReadsGrid's Items collection, if there is one. if ( idxRead > 0 ) { // Set HaveNextRecord and HavePrevRecord HaveNextRecord = true; HavePrevRecord = idxRead > 0; // Select the next record. read = ReadsGrid.Items[ idxRead - 1 ] as ReadViewModel; } else { // There isn't a previous record. Set HavePrevRecord to false and HaveNextRecord HavePrevRecord = false; HaveNextRecord = idxRead < ( ReadsGrid.Items.Count - 1 ); } // Select the Read & scroll it into view ReadsGrid.SelectedItem = read; ReadsGrid.ScrollIntoView( read ); }