or
<telerik:RadGridView Name="DocumentGrid" SelectionMode="Extended" ItemsSource="{Binding Path=Documents}" AutoGenerateColumns="False" IsReadOnly="True" RowStyleSelector="{StaticResource DocumentStyleSelector}">internal class DocumentStyleSelector : StyleSelector{ public Style DocumentModifiedStyle { get; set; } public override Style SelectStyle(object item, DependencyObject container) { var document = item as Document; if (document != null && document.EntityState == EntityState.Modified) { return DocumentModifiedStyle; } return null; }}<layout:DocumentStyleSelector x:Key="DocumentStyleSelector"> <layout:DocumentStyleSelector.DocumentModifiedStyle> <Style TargetType="telerik:GridViewRow"> <Setter Property="Background" Value="DarkGray" /> </Style> </layout:DocumentStyleSelector.DocumentModifiedStyle></layout:DocumentStyleSelector><Window x:Class="VariousDataSources.MainWindow" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" Title="MainWindow" > <Window.Resources> </Window.Resources> <telerik:RadGridView x:Name="RadGridView1" GroupRenderMode="Flat" AutoGenerateColumns="True" RowIndicatorVisibility="Collapsed" CanUserFreezeColumns="False" ItemsSource="{Binding DataSource}" SelectionMode="Extended"> </telerik:RadGridView></Window> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new MyModel(); } }public class MyRow { public int SlowColumn { get; set; } public int FastColumn { get; set; } } public class MyModel : ViewModelBase { public MyModel() { DataSource = new ObservableCollection<MyRow>(); for (var i = 0; i < 50000; i++) { var row = new MyRow(); row.SlowColumn = 1; row.FastColumn = i; DataSource.Add(row); } } public ObservableCollection<MyRow> DataSource { get; set; } }this.radGridView.BeginInsert();class Summation : AggregateFunction<BindableDynamicDictionary, int> { public Summation() { this.AggregationExpression = items => FindSum(items); } private int FindSum(IEnumerable<BindableDynamicDictionary> source) { var itemCount = source.Count(); int sum = 0; if (itemCount >= 1) { var values = source.Select(i => i["Score"]); foreach (int str in values) { sum = sum + str; } } return sum; } }<telerik:RadPanelBar DockPanel.Dock="Left" Width="200" regions:RegionManager.RegionName="NavPanelRegion" Background="LightBlue"> <telerik:RadPanelBarItem regions:RegionManager.RegionName="NavPanelHomeRegion" Header="Home"> </telerik:RadPanelBarItem> <telerik:RadPanelBarItem regions:RegionManager.RegionName="NavPanelToolsRegion" Header="Tools"> </telerik:RadPanelBarItem> <telerik:RadPanelBarItem regions:RegionManager.RegionName="NavPanelMaintenanceRegion" Header="Maintenance"> </telerik:RadPanelBarItem> <telerik:RadPanelBarItem regions:RegionManager.RegionName="NavPanelReportingRegion" Header="Reporting"> </telerik:RadPanelBarItem></telerik:RadPanelBar><telerik:RadPanelBarItem x:Class="Modules.Dashboard.Views.DashboardPanelItemView" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:regions="http://www.codeplex.com/CompositeWPF" xmlns:vm="clr-namespace:Modules.Dashboard.ViewModels" Header="Homepage"> <telerik:RadPanelBarItem.Resources> <vm:DashboardCommandViewModel x:Key="DashboardCommandVm" /> </telerik:RadPanelBarItem.Resources> <telerik:RadPanelBarItem.Command> <Binding Source="{StaticResource DashboardCommandVm}" Path="Home" /> </telerik:RadPanelBarItem.Command></telerik:RadPanelBarItem>public void Initialize() { Container.RegisterType<Object, Views.DashboardView>("DashboardView"); this._regionViewRegistry.RegisterViewWithRegion(RegionNames.Navigation.HomeNavigationPanelRegion, typeof(Views.DashboardPanelItemView)); this._regionViewRegistry.RegisterViewWithRegion("ContentRegion", typeof(DashboardView)); }class PaneFactory : DockingPanesFactory{ protected override void AddPane(RadDocking radDocking, RadPane pane) { //Docking is UserControl, which contains RadDocking var docking = radDocking.ParentOfType<Docking>(); var settings = pane.Tag as PaneSettings; if (settings.ScreenPosition == ScreenPosition.Left) { //LeftPaneGroup is pane group declared in xaml (docked to left side) docking.LeftPaneGroup.AddItem(pane, DockPosition.Center); } else { //DocumentPaneGroup is document host declared in xaml docking.DocumentPaneGroup.AddItem(pane, DockPosition.Center); } }
} public class ConnectorExtension { public static readonly DependencyProperty ConnectorsProperty = DependencyProperty.RegisterAttached("Connectors", typeof(List<ConnectorModel>), typeof(ConnectorExtension), new UIPropertyMetadata(null, new PropertyChangedCallback(ConnectorsChanged))); public static void SetConnectors(UIElement element, List<ConnectorModel> value) { element.SetValue(ConnectorsProperty, value); } public static List<ConnectorModel> GetConnectors(UIElement element) { return (List<ConnectorModel>)element.GetValue(ConnectorsProperty); } public static void ConnectorsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var connectors = e.NewValue as List<ConnectorModel>; var shape = d as RadDiagramShapeBase; if (shape != null ) { if (connectors != null) { shape.UseDefaultConnectors = false; shape.Connectors.Clear(); connectors.ForEach(connector => shape.Connectors.Add(new RadDiagramConnector() { Offset = connector.Offset, Name = connector.Name, Tag=connector.Name })); } else { shape.UseDefaultConnectors = false; shape.Connectors.Clear(); } } } }}<Style x:Key="DynamicConnectorStyle" TargetType="telerik:RadDiagramShape"> <Setter Property="Position" Value="{Binding Position, Mode=TwoWay}"/> <Setter Property="IsSelected" Value="{Binding IsSelected}" /> <Setter Property="Height" Value="{Binding Height}" /> <Setter Property="Width" Value="{Binding Width}" /> <Setter Property="Background" Value="Transparent" /> <Setter Property="IsEditable" Value="False" /> <Setter Property="StrokeThickness" Value="0" /> <Setter Property="UseDefaultConnectors" Value="False"/> <Setter Property="extensions:ConnectorExtension.Connectors" Value="{Binding Path=Connectors,UpdateSourceTrigger=PropertyChanged}"/> <Setter Property="ContentTemplate" Value="{Binding Path=TemplateKey,Converter={StaticResource DataTemplateSelector}}" /></Style>