or
<Style TargetType="{x:Type TextBox}"> <Setter Property="Background" Value="{DynamicResource UnfocusedBackground}" /> <Setter Property="BorderBrush" Value="{DynamicResource ControlBorder}" /> <Setter Property="Foreground" Value="{DynamicResource UnfocusedForeground}" /> <Style.Triggers> <Trigger Property="IsFocused" Value="True"> <Setter Property="Background" Value="{DynamicResource FocusedBackground}" /> <Setter Property="Foreground" Value="{DynamicResource FocusedForeground}" /> </Trigger> </Style.Triggers> </Style> 
I had to create a custom column generator with additional logic. It uses reflection to retrieve information about required fields and generates columns.
var gridColumn = new Telerik.Windows.Controls.GridViewDataColumn {
Header = attributes[0].Header, IsVisible = attributes[0].IsVisible,
UniqueName = property.Name,
DataMemberBinding = new Binding(string.Format("Item.{0}", property.Name)),
}It works perfectly except grouping and sorting. However I turned on, that user can sort, and the
grid is groupable and sortable.this.InternalGrid.GroupDescriptors.Add(new Telerik.Windows.Controls.GridView.ColumnGroupDescriptor()
{ Column = this.InternalGrid.Columns[1] });
Grouping seems to be working, it adds the correct column to the group panel, however there is only one group
which contains all of the rows. Sorting is working alike, indicator shows the correct sorting option but nothing
happens. What am I missing here?
<telerik:RadDataPager Grid.Row="3" x:Name="radDataPager" Source="{Binding SearchResults}" PageSize="5" DisplayMode="All" IsTotalItemCountFixed="True" /><telerik:RadGridView x:Name="grdSearchResults" Grid.Row="4" ItemsSource="{Binding PagedSource, ElementName=radDataPager}" IsBusy="{Binding IsSearchActive}" IsReadOnly="True" CanUserDeleteRows="False" CanUserInsertRows="False" ShowGroupPanel="False" Width="auto" AutoGenerateColumns="False" ReorderColumnsMode="Interactive" RowIndicatorVisibility="Collapsed" AutoExpandGroups="True" SelectionMode="Extended"> <telerik:RadGridView.GroupDescriptors> <telerik:GroupDescriptor Member="AccountNumber" SortDirection="Ascending" /> <telerik:GroupDescriptor Member="DocumentType" SortDirection="Ascending" /> </telerik:RadGridView.GroupDescriptors> <i:Interaction.Behaviors> <Behaviors:MultiSelectBehavior SelectedItems="{Binding SelectedDocuments}"/> </i:Interaction.Behaviors> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn Header="ID" DataMemberBinding="{Binding EntryId}" /> <telerik:GridViewDataColumn Header="Status" DataMemberBinding="{Binding Status}" /> <telerik:GridViewDataColumn Header="Created" DataMemberBinding="{Binding CreateDate}" /> <telerik:GridViewSelectColumn /> </telerik:RadGridView.Columns> <i:Interaction.Triggers> <i:EventTrigger EventName="RowActivated" > <i:InvokeCommandAction Command="{Binding DisplayViewCommand}" /> </i:EventTrigger> </i:Interaction.Triggers></telerik:RadGridView>public class RequestColumnConverter : IValueConverter{ public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value != null) { string name = (string)value; var requestImage = new Image() { Height = 16, Width = 16, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, }; requestImage.Source = new BitmapImage(new Uri("pack://application:,,,/Images/service.png")); return requestImage; } else return null; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return null; }}<telerik:GridViewDataColumn Header="Type" IsReadOnly="True" UniqueName="SCSRequestTypeName" DataMemberBinding="{Binding Path=SCSRequestTypeName, Converter={StaticResource requestColumnConverter}}"> <telerik:GridViewDataColumn.CellTemplate> <DataTemplate> <Image Source="{Binding SCSRequestTypeName, Converter={StaticResource requestColumnConverter}}"/> </DataTemplate> </telerik:GridViewDataColumn.CellTemplate></telerik:GridViewDataColumn>