Hi,
On a page, I have a gridview which shows data which come from a binding to a collection of a class A.
What I want to do is to get the currently showed items on the grid view, transform the items into new items of a class B and bind the new item collection of the class B to a pie chart.
To do that, the only solution I could see was to use a converter.
What I've done compile fine, but when I run the application, the pie chart is empty whereas the grid view contains elements.
Here is the XAML code with the mapping on ItemsSource :
And here is the converter code :
In debug mode, when I look at dataItemCollection, it's empty !
So, converter can be use is that case ?
If not, how can I do it ?
Thanks.
On a page, I have a gridview which shows data which come from a binding to a collection of a class A.
What I want to do is to get the currently showed items on the grid view, transform the items into new items of a class B and bind the new item collection of the class B to a pie chart.
To do that, the only solution I could see was to use a converter.
What I've done compile fine, but when I run the application, the pie chart is empty whereas the grid view contains elements.
Here is the XAML code with the mapping on ItemsSource :
<telerikGrid:RadGridView x:Name="GridView"></telerikGrid:RadGridView><telerikChart:RadChart ItemsSource="{Binding ElementName=GridView,Path=Items,Converter={StaticResource Converter}}"><telerikChart:RadChart.SeriesMappings> <telerikCharting:SeriesMapping> <telerikCharting:SeriesMapping.SeriesDefinition> <telerikCharting:Pie3DSeriesDefinition/> </telerikCharting:SeriesMapping.SeriesDefinition> <telerikCharting:SeriesMapping.ItemMappings> <telerikCharting:ItemMapping DataPointMember="LegendLabel" FieldName="Key" /> <telerikCharting:ItemMapping DataPointMember="YValue" FieldName="Value" /> </telerikCharting:SeriesMapping.ItemMappings> </telerikCharting:SeriesMapping></telerikChart:RadChart.SeriesMappings><telerikChart:RadChart.DefaultView> <telerikCharting:ChartDefaultView> <telerikCharting:ChartDefaultView.ChartArea> <telerikCharting:ChartArea LegendName="chartLegend"> </telerikCharting:ChartArea> </telerikCharting:ChartDefaultView.ChartArea> <telerikCharting:ChartDefaultView.ChartLegend> <telerikCharting:ChartLegend x:Name="chartLegend" UseAutoGeneratedItems="True" /> </telerikCharting:ChartDefaultView.ChartLegend> </telerikCharting:ChartDefaultView></telerikChart:RadChart.DefaultView></telerikChart:RadChart>And here is the converter code :
[ValueConversion(typeof(DataItemCollection), typeof(ObservableCollection<KeyValuePair<string, int>>))]public class Converter : IValueConverter{ public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { ObservableCollection<KeyValuePair<string, int>> convertedItems = new ObservableCollection<KeyValuePair<string, int>>(); DataItemCollection dataItemCollection = (DataItemCollection)value; if (dataItemCollection.ItemCount > 0) { // I put here transformed elements in the collection convertedItems. } return convertedItems; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); }}In debug mode, when I look at dataItemCollection, it's empty !
So, converter can be use is that case ?
If not, how can I do it ?
Thanks.