This question is locked. New answers and comments are not allowed.
Hi,
I am currently evaluating your Silverlight Controls and comparing it other popular controls. Unfortunately, I am experiencing some performance problems on your Charting and DataGrid Controls. Initial loading time of Telerik controls will take about 2-3 seconds. I am not sure if I'm using it the wrong way or if there are some ways to optimize my code. I have attached the screenshot of the sample application that I wrote that will load a pie chart, bar chart and a data grid.
Codes for the sample application are as follows:
XAML:
<UserControl xmlns:local="clr-namespace:ChartToolsComparisonScreens" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:SampleData1="clr-namespace:Expression.Blend.SampleData.ReadingExceptionData" xmlns:SampleData2="clr-namespace:Expression.Blend.SampleData.CommunicationExceptionData" mc:Ignorable="d" x:Class="ChartToolsComparisonScreens.TelerikSample" Width="1200" Height="900"> <UserControl.Resources> <SampleData1:ReadingExceptionData x:Key="ReadingExceptionData" d:IsDataSource="True"/> <SampleData2:CommunicationExceptionData x:Key="CommunicationExceptionData" d:IsDataSource="True"/> </UserControl.Resources> <Grid x:Name="LayoutRoot" Background="White"> <local:NavigationComponent HorizontalAlignment="Left" VerticalAlignment="Top" d:IsPrototypingComposition="True" Margin="8,24,0,0"/> <telerik:RadChart x:Name="telePieChart" Margin="116,130,125,368"/> <telerik:RadChart x:Name="teleBarChart" Margin="162,0,158,368" VerticalAlignment="Bottom" Height="402" Visibility="Collapsed"/> <Button x:Name="btnBack" Content="â—„" HorizontalAlignment="Left" Margin="115,130,0,0" VerticalAlignment="Top" Width="43" Height="42" Click="btnBack_click" FontFamily="Calibri" FontSize="29.333" Visibility="Collapsed"/> <telerik:RadGridView x:Name="teleGrid" Margin="116,0,125,34" VerticalAlignment="Bottom" Height="330" RowIndicatorVisibility="Collapsed" CanUserFreezeColumns="False" AutoGenerateColumns="False" IsReadOnly="True"> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn DataMemberBinding="{Binding SerialNo}" Header="Serial No" Width="120" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding PlantNo}" Header="Plant No" Width="130" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding SiteId}" Header="Site ID" Width="110" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding MeterId}" Header="Meter ID" Width="110" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Status}" Header="Status" Width="110" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding InstallDate}" Header="Install Date" Width="125"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding UninstallDate}" Header="Uninstall Date" Width="125"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding LastReadDate}" Header="Last Read Date" Width="125" /> </telerik:RadGridView.Columns> </telerik:RadGridView> <telerik:RadDataPager HorizontalAlignment="Left" Margin="116,0,0,8" VerticalAlignment="Bottom" d:LayoutOverrides="Height" PageSize="10" Source="{Binding Items, ElementName=teleGrid}" IsTotalItemCountFixed="True" DisplayMode="FirstLastPreviousNextNumeric, Text"/> <TextBlock Height="53" Margin="115,73,371,0" Style="{StaticResource BasicTextBlock-Sketch}" TextWrapping="Wrap" Text="Telerik RadControls Q1 2011 SP1" VerticalAlignment="Top" FontFamily="Calibri" FontSize="48"/> </Grid></UserControl>C#:
using System.Windows.Controls;using Telerik.Windows.Controls.Charting;namespace ChartToolsComparisonScreens{ public partial class TelerikSample : UserControl { Expression.Blend.SampleData.ReadingExceptionData.ItemCollection readingExceptions; Expression.Blend.SampleData.CommunicationExceptionData.ItemCollection communicationExceptions; public TelerikSample() { // Required to initialize variables InitializeComponent(); // Bar Chart SeriesMapping barMapping = new SeriesMapping() { SeriesDefinition = new HorizontalBarSeriesDefinition() { ShowItemLabels = true, LegendDisplayMode = LegendDisplayMode.None } }; teleBarChart.DefaultView = new ChartDefaultView { ChartLegend = new ChartLegend() { Visibility = System.Windows.Visibility.Collapsed } }; ItemMapping labelMapping = new ItemMapping("Label", DataPointMember.XCategory); ItemMapping valueMapping = new ItemMapping("Value", DataPointMember.YValue); barMapping.ItemMappings.Add(labelMapping); barMapping.ItemMappings.Add(valueMapping); barMapping.SeriesDefinition.ItemLabelFormat = "#Y"; teleBarChart.SeriesMappings.Add(barMapping); teleBarChart.DefaultSeriesDefinition = new HorizontalBarSeriesDefinition(); // Pie Chart SeriesMapping pieMapping = new SeriesMapping() { SeriesDefinition = new PieSeriesDefinition() { ShowItemLabels = true, LegendDisplayMode = LegendDisplayMode.None, InteractivitySettings = new InteractivitySettings() { SelectionMode = ChartSelectionMode.Single, SelectionScope = InteractivityScope.Item } } }; telePieChart.DefaultView = new ChartDefaultView() { ChartLegend = new ChartLegend() { Visibility = System.Windows.Visibility.Collapsed }, ChartArea = new ChartArea() }; telePieChart.DefaultView.ChartArea.SelectionChanged += telePieChart_SelectionChanged; pieMapping.ItemMappings.Add(labelMapping); pieMapping.ItemMappings.Add(valueMapping); pieMapping.SeriesDefinition.ItemLabelFormat = "#Y%, #XCAT"; telePieChart.SeriesMappings.Add(pieMapping); telePieChart.ItemsSource = ChartSampleData.getPerformanceData(); readingExceptions = ((Expression.Blend.SampleData.ReadingExceptionData.ReadingExceptionData)Resources["ReadingExceptionData"]).Collection; communicationExceptions = ((Expression.Blend.SampleData.CommunicationExceptionData.CommunicationExceptionData)Resources["CommunicationExceptionData"]).Collection; } private void telePieChart_SelectionChanged(object sender, ChartSelectionChangedEventArgs e) { DataPoint dataPoint = null; if (e.AddedItems.Count > 0) dataPoint = e.AddedItems[0]; else return; if (dataPoint.XCategory.IndexOf("Exception") > -1) { if (dataPoint.XCategory.IndexOf("Reading") > -1) { teleBarChart.ItemsSource = ChartSampleData.getReadingException(); teleGrid.ItemsSource = readingExceptions; } else if (dataPoint.XCategory.IndexOf("Communication Exception") > -1) { teleBarChart.ItemsSource = ChartSampleData.getCommunicationException(); teleGrid.ItemsSource = communicationExceptions; } telePieChart.DefaultView.ChartArea.UnselectItem(dataPoint); teleBarChart.Visibility = System.Windows.Visibility.Visible; telePieChart.Visibility = System.Windows.Visibility.Collapsed; btnBack.Visibility = System.Windows.Visibility.Visible; } } private void btnBack_click(object sender, System.Windows.RoutedEventArgs e) { telePieChart.Visibility = System.Windows.Visibility.Visible; teleBarChart.Visibility = System.Windows.Visibility.Collapsed; btnBack.Visibility = System.Windows.Visibility.Collapsed; teleGrid.ItemsSource = null; } }}Thanks and I hope to hear from anyone in this community!
Warmest Regards,
Carlos
