or
private ObservableCollection<ObservableCollection<LogField>> _RowData;public ObservableCollection<ObservableCollection<LogField>> RowData{ get { return _RowData; } set { if (value != _RowData) { _RowData = value; onPropertyChanged(this, "RowData"); } }}public class LogField : INotifyPropertyChanged { private byte _HighlighFlag; public byte HighlightFlag { get { return _HighlighFlag; } set { if (value != _HighlighFlag) { _HighlighFlag = value; onPropertyChanged(this, "HighlightFlag"); } } } private string _Value; public string Value { get { return _Value; } set { if (value != _Value) { _Value = value; onPropertyChanged(this, "Value"); } } } private string _DisplayUnits; public string DisplayUnits { get { return _DisplayUnits; } set { if (value != _DisplayUnits) { _DisplayUnits = value; onPropertyChanged(this, "DisplayUnits"); } } } private string _BaseUnits; public string BaseUnits { get { return _BaseUnits; } set { if (value != _BaseUnits) { _BaseUnits = value; onPropertyChanged(this, "BaseUnits"); } } } private byte _FieldType; public byte FieldType { get { return _FieldType; } set { if (value != _FieldType) { _FieldType = value; onPropertyChanged(this, "FieldType"); } } } private string _FieldFormat; public string FieldFormat { get { return _FieldFormat; } set { if (value != _FieldFormat) { _FieldFormat = value; onPropertyChanged(this, "FieldFormat"); } } } private int _SelectOffset; public int SelectOffset { get { return _SelectOffset; } set { if (value != _SelectOffset) { _SelectOffset = value; onPropertyChanged(this, "SelectOffset"); } } } private int _UnitNumber; public int UnitNumber { get { return _UnitNumber; } set { if (value != _UnitNumber) { _UnitNumber = value; onPropertyChanged(this, "UnitNumber"); } } } public event PropertyChangedEventHandler PropertyChanged; private void onPropertyChanged(object sender, string propertyName) { if (this.PropertyChanged != null) { PropertyChanged(sender, new PropertyChangedEventArgs(propertyName)); } } }// Initialize the radGridView with the propper settings for a log screen.int columnIndex = 0;thisMMGridView.Height = 280;LogScreen logScreen = (LogScreen)thisMMGridView.CurrentScreen;thisMMGridView.radGridView.AutoGenerateColumns = false;thisMMGridView.radGridView.Columns.Clear();// Build the columns based on the headerStringsforeach (string headerString in logScreen.ColumnHeaderStrings){ GridViewDataColumn column = new GridViewDataColumn(); // Create the column header TextBlock headerText = new TextBlock(); headerText.Text = headerString; headerText.TextWrapping = TextWrapping.Wrap; headerText.TextAlignment = TextAlignment.Left; headerText.Padding = new Thickness(1, 0, 2, 0); column.HeaderCellStyle = thisMMGridView.TryFindResource("AlarmGridViewHeaderCellStyle") as Style; column.Header = headerText; column.UniqueName = headerString; thisMMGridView.radGridView.Columns.Add(column); // Bind the column to it's data column.DataMemberBinding = new Binding("["+ columnIndex.ToString() +"].Value"); // Bump the column index that is used for the columnBind columnIndex++;}// Freeze the time & date columns so they are always visibleif (thisMMGridView.radGridView.Columns[1].UniqueName == "DATE"){ thisMMGridView.radGridView.FrozenColumnCount = 2;}else{ thisMMGridView.radGridView.FrozenColumnCount = 1;}// Set the ItemsSource property of the grid to the data collection.thisMMGridView.radGridView.ItemsSource = thisMMGridView.Unit.LogData.RowData;view.ViewModel.DataItem = new Telerik.Windows.Data.QueryableDataServiceCollectionView<User>(db, db.Users){ AutoLoad = true,PageSize=20};<telerik:RadGridView ItemsSource="{Binding PagedSource, ElementName=DataPager1}" ><telerik:RadDataPager Name="DataPager1" Source="{Binding DataItem}" PageSize="20" DisplayMode="Numeric"><telerik:RadGridView AlternationCount="1" AutoExpandGroups="False" AutoGenerateColumns="False" CanUserDeleteRows="False" CanUserFreezeColumns="False" CanUserInsertRows="False" CanUserResizeColumns="True" CanUserSortColumns="True" DataLoadMode="Synchronous" EnableColumnVirtualization="True" EnableRowVirtualization="True" FontSize="16" FontWeight="Bold" Grid.Column="0" Grid.Row="0" IsReadOnly="True" Name="HotListGrid" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto" SelectionChanged="HotListGrid_SelectionChanged" SelectionUnit="FullRow" ShowColumnFooters="True" ShowGroupPanel="False" ToolTip="Hot Lists"> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn DataMemberBinding="{Binding Name , Mode=OneWay}" Header="Hot List" Width="323"> <telerik:GridViewDataColumn.AggregateFunctions> <telerik:CountFunction Caption="Count: " ResultFormatString="{}{0:n0}" /> </telerik:GridViewDataColumn.AggregateFunctions> </telerik:GridViewDataColumn> <telerik:GridViewDataColumn DataMemberBinding="{Binding ListType , Mode=OneWay}" Header="List Type" Width="Auto" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding LastUpdate, Mode=OneWay, Converter={StaticResource DateConverter}}" Header="Last Update" Width="200" /> <telerik:GridViewImageColumn DataMemberBinding="{Binding Status , Mode=OneWay, Converter={StaticResource DeviceStatuses}}" Header="Status" ImageStretch="None" Width="95" /> <telerik:GridViewDataColumn Header="Entries" TextAlignment="Right" Width="135"> <telerik:GridViewDataColumn.DataMemberBinding> <Binding Path="EntryCount" Mode="OneWay" Converter="{StaticResource LongConverter}" ConverterParameter="#,##0" /> </telerik:GridViewDataColumn.DataMemberBinding> <telerik:GridViewDataColumn.AggregateFunctions> <telerik:SumFunction ResultFormatString="{}{0:n0}" /> </telerik:GridViewDataColumn.AggregateFunctions> </telerik:GridViewDataColumn> </telerik:RadGridView.Columns> </telerik:RadGridView><Style TargetType="{x:Type telerik:GridViewGroupFooterRow}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type telerik:GridViewGroupFooterRow}"> <Border x:Name="PART_GroupFooterRowBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> <telerik:SelectiveScrollingGrid> <telerik:SelectiveScrollingGrid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </telerik:SelectiveScrollingGrid.ColumnDefinitions> <Border x:Name="PART_IndicatorPresenter" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,0,1,0" Grid.Column="0" telerik:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" Visibility="{TemplateBinding RowIndicatorVisibility}" VerticalAlignment="Stretch" Width="25"> <Border BorderBrush="White" BorderThickness="1" Background="#FFE4E4E4"/> </Border> <Border x:Name="PART_HierarchyIndent" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,0,1,0" Grid.Column="2" telerik:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" Width="25"> <Border.Visibility> <Binding Path="HasHierarchy" RelativeSource="{RelativeSource TemplatedParent}"> <Binding.Converter> <telerik:BooleanToVisibilityConverter/> </Binding.Converter> </Binding> </Border.Visibility> </Border> <telerik:DataCellsPresenter x:Name="PART_DataCellsPresenter" Grid.Column="3" IsTabStop="False" /> <telerik:IndentPresenter x:Name="PART_IndentPresenter" Grid.Column="1" IsTabStop="False" IndentLevel="{TemplateBinding IndentLevel}" telerik:SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical"> <telerik:IndentPresenter.ItemTemplate> <DataTemplate> <telerik:GridViewGroupFooterIndentCell IsTabStop="False"> <telerik:StyleManager.Theme> <telerik:Office_BlackTheme/> </telerik:StyleManager.Theme> </telerik:GridViewGroupFooterIndentCell> </DataTemplate> </telerik:IndentPresenter.ItemTemplate> <telerik:StyleManager.Theme> <telerik:Office_BlackTheme/> </telerik:StyleManager.Theme> </telerik:IndentPresenter> </telerik:SelectiveScrollingGrid> </Border> </ControlTemplate> </Setter.Value> </Setter> <Setter Property="Background" Value="{DynamicResource DataHeaderBackground}"/> <Setter Property="BorderBrush" Value="{DynamicResource DataBorder}"/> <Setter Property="MinHeight" Value="25"/> <Setter Property="BorderThickness" Value="0,0,0,1"/> <Setter Property="VerticalContentAlignment" Value="Stretch"/> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> <Setter Property="SnapsToDevicePixels" Value="True"/> <Setter Property="Foreground" Value="{DynamicResource DataHeaderForeground}"/> </Style>