or
public class WorkItemTree { public ObservableCollection<WorkItemNode> workItems { get; set; } } public class WorkItemNode { public ObservableCollection<WorkItemNode> Children { get; set; } public int Id { get; set; } public string Title { get; set; } public string State { get; set; } public List<MyState> States { get; set; }} public class MyState { public string Name { get; set; } }this.radTreeListView.ItemsSource = TFSManager.workItems.workItems;<Window xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" x:Class="TFSTreeView.MainWindow" Title="MainWindow" Height="350" Width="525"> <Grid> <telerik:RadTreeListView x:Name="radTreeListView" AutoGenerateColumns="False" ScrollMode="Deferred" LoadingRowDetails="radTreeListView_LoadingRowDetails" RowDetailsVisibilityMode="Visible" Margin="0,0,0,-23" IsReadOnly="True" DataLoaded="radTreeListView_DataLoaded" > <telerik:RadTreeListView.ChildTableDefinitions> <telerik:TreeListViewTableDefinition ItemsSource="{Binding Children}" /> </telerik:RadTreeListView.ChildTableDefinitions> <telerik:RadTreeListView.Columns> <telerik:GridViewComboBoxColumn Name="State" Header="State" DataMemberBinding="{Binding State, Mode=TwoWay}" ItemsSource="{Binding States}" DisplayMemberPath="Name" SelectedValueMemberPath="Name"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding Title}" Header="Title" /> </telerik:RadTreeListView.Columns> </telerik:RadTreeListView> </Grid></Window>public void Create2DCharting(ObservableCollection<CategoricalDataItem> data, NewChartTheme chartTheme) { this.ShowCartesian3DChart = false; BarSeries barSeries = new BarSeries(); if (chartTheme.ColorBrushes.Count > 0) { for (int i = 0; i < data.Count; i++ ) { data[i].Color = chartTheme.ColorBrushes[i]; } } if (chartTheme.ChartTp == ChartType.PieChart || chartTheme.ChartTp == ChartType.DoughnutChart) { this.ShowPieChart = true; this.ShowCartesian2DChart = false; this.PieChart = new RadPieChart(); this.PieChart.Palette = new ChartPalette(); foreach (CategoricalDataItem cdi in data) PieChart.Palette.GlobalEntries.Add(new PaletteEntry(cdi.Color, cdi.Color)); if (chartTheme.ShowLegend) { this.ChartLegend = new RadLegend(); this.ChartLegend.Items = this.PieChart.LegendItems; } } else { this.ShowPieChart = false; this.ShowCartesian2DChart = true; this.CartesianChart2D = new RadCartesianChart(); if (chartTheme.BackgroundColor != null) this.CartesianChart2D.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(chartTheme.BackgroundColor)); barSeries.HorizontalAxis = new CategoricalAxis(); barSeries.VerticalAxis = new LinearAxis(); if (chartTheme.ShowLegend) { this.ChartLegend = new RadLegend(); barSeries.ItemsSource = data; barSeries.ValueBinding = new PropertyNameDataPointBinding("YValue"); barSeries.CategoryBinding = new PropertyNameDataPointBinding("XValue"); LegendItemCollection lic = new LegendItemCollection(); foreach (var d in data) lic.Add(new LegendItem() { MarkerFill = (Brush)d.Color, MarkerStroke = (Brush)d.Color, Title = d.XValue }); this.ChartLegend.Items = lic; } else { barSeries.ItemsSource = data; barSeries.ValueBinding = new PropertyNameDataPointBinding("YValue"); barSeries.CategoryBinding = new PropertyNameDataPointBinding("XValue"); } } switch(chartTheme.ChartTp) { case ChartType.BarChart : if(chartTheme.ColorBrushes.Count > 0) barSeries.PointTemplate = GetBarColorDataTemplate(); if (chartTheme.ShowGridLines) this.CartesianChart2D.Grid = new CartesianChartGrid() { MajorLinesVisibility = GridLineVisibility.Y }; this.CartesianChart2D.Series.Add(barSeries); break; case ChartType.HorizontalBarChart : barSeries.VerticalAxis = new CategoricalAxis(); barSeries.HorizontalAxis = new LinearAxis(); if(chartTheme.ColorBrushes.Count > 0) barSeries.PointTemplate = GetBarColorDataTemplate(); this.CartesianChart2D.Series.Add(barSeries); break; case ChartType.LineGraph : LineSeries lineSeries = new LineSeries(); lineSeries.HorizontalAxis = new CategoricalAxis(); lineSeries.VerticalAxis = new LinearAxis(); lineSeries.ItemsSource = data; lineSeries.ValueBinding = new PropertyNameDataPointBinding("YValue"); lineSeries.CategoryBinding = new PropertyNameDataPointBinding("XValue"); lineSeries.PointTemplate = GetLineDataPointDataTemplate(); this.CartesianChart2D.Series.Add(lineSeries); break; case ChartType.PieChart : PieSeries pieSeries = new PieSeries(); pieSeries.ItemsSource = data; pieSeries.ValueBinding = new PropertyNameDataPointBinding("YValue"); PieChart.Series.Add(pieSeries); break; case ChartType.DoughnutChart : DoughnutSeries doughnutSeries = new DoughnutSeries(); doughnutSeries.ItemsSource = data; doughnutSeries.ValueBinding = new PropertyNameDataPointBinding("YValue"); PieChart.Series.Add(doughnutSeries); break; } }private DataTemplate GetBarColorDataTemplate() { StringReader markup = new StringReader( @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">" + @"<Rectangle Fill=""{Binding DataItem.Color}""/>" + @"</DataTemplate>"); XmlReader xmlReader = XmlReader.Create(markup); return XamlReader.Load(xmlReader) as DataTemplate; } private DataTemplate GetLineDataPointDataTemplate() { StringReader markup = new StringReader( @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">" + @"<Ellipse Height=""10"" Width=""10"" Fill=""{Binding DataItem.Color}""/>" + @"</DataTemplate>"); XmlReader xmlReader = XmlReader.Create(markup); return XamlReader.Load(xmlReader) as DataTemplate; }