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