or
ProfileQuelle_cbx.ItemsSource = ITA_Packetverwaltung.Dialog.Settings.Verbindungen.GetVerbindungen();Model.Profile.Profiles Quelle_obj = new Model.Profile.Profiles();Quelle_obj = ProfileQuelle_cbx.SelectedItem;public class PlotItemViewModel { //y-axis value public string City { get; set; } //x-axis value public DateTime StartTime { get; set; } //added to provide a value useful to a linear axis public int Sequence { get; set; } }public class PlotItems{ public ObservableCollection<PlotItemViewModel> Items { get; set; } public DateTime RangeStart { get; set; } public DateTime RangeEnd { get; set; } public PlotItems() { Items = new ObservableCollection<PlotItemViewModel>(); var dateTime = DateTime.Now; Items.Add(new PlotItemViewModel() { City = "Atlanta", StartTime = dateTime.AddMinutes(50), Sequence = 6 }); Items.Add(new PlotItemViewModel() { City = "Atlanta", StartTime = dateTime.AddMinutes(10), Sequence = 6 }); Items.Add(new PlotItemViewModel() { City = "New York", StartTime = dateTime.AddMinutes(100), Sequence = 5 }); Items.Add(new PlotItemViewModel() { City = "Miami", StartTime = dateTime.AddMinutes(120), Sequence = 4 }); Items.Add(new PlotItemViewModel() { City = "Miami", StartTime = dateTime.AddMinutes(150), Sequence = 4 }); Items.Add(new PlotItemViewModel() { City = "Savannah", StartTime = dateTime.AddMinutes(200), Sequence = 3 }); Items.Add(new PlotItemViewModel() { City = "Birmingham", StartTime = dateTime.AddMinutes(250), Sequence = 2 }); Items.Add(new PlotItemViewModel() { City = "New Orleans", StartTime = dateTime.AddMinutes(280), Sequence = 1 }); Items = new ObservableCollection<PlotItemViewModel>(Items.OrderBy(x => x.StartTime)); RangeStart = Items.First().StartTime.AddMinutes(-Items.First().StartTime.Minute); RangeEnd = Items.Last().StartTime.AddMinutes(-Items.Last().StartTime.Minute).AddHours(1); }}<telerik:RadCartesianChart Margin="5" > <telerik:RadCartesianChart.HorizontalAxis> <telerik:DateTimeContinuousAxis Title="Time" MajorStepUnit="Hour" MajorStep="1" LabelFormat="h:mm tt" Minimum="{Binding RangeStart}" Maximum="{Binding RangeEnd}"> </telerik:DateTimeContinuousAxis> </telerik:RadCartesianChart.HorizontalAxis> <telerik:RadCartesianChart.VerticalAxis> <telerik:LinearAxis Title="Cities" /> </telerik:RadCartesianChart.VerticalAxis> <telerik:RadCartesianChart.Series> <telerik:LineSeries ItemsSource="{Binding Items}" CategoryBinding="StartTime" ValueBinding="Sequence" Stroke="Orange" StrokeThickness="2"> </telerik:LineSeries> </telerik:RadCartesianChart.Series></telerik:RadCartesianChart><Window xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" x:Class="WpfRadGridViewCustomHierarchyDynamicColumns.MainWindow" Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded"> <Grid> <telerik:RadGridView x:Name="DynamicGridUi" ShowColumnFooters="True" GroupRenderMode="Flat" CanUserFreezeColumns="False" ColumnWidth="*" GridLinesVisibility="Both" RowIndicatorVisibility="Collapsed" IsReadOnly="True" AutoGenerateColumns="True"> <telerik:RadGridView.ChildTableDefinitions> <telerik:GridViewTableDefinition/> </telerik:RadGridView.ChildTableDefinitions> <telerik:RadGridView.Columns> </telerik:RadGridView.Columns> <telerik:RadGridView.HierarchyChildTemplate> <DataTemplate> <telerik:RadGridView x:Name="RadGridView1" GroupRenderMode="Flat" BorderThickness="0,1,0,1" GridLinesVisibility="None" CanUserFreezeColumns="False" AutoGenerateColumns="False" ItemsSource="{Binding LowerLevel}" ShowGroupPanel="True" IsReadOnly="True"> <telerik:RadGridView.Columns> </telerik:RadGridView.Columns> </telerik:RadGridView> </DataTemplate> </telerik:RadGridView.HierarchyChildTemplate> </telerik:RadGridView> </Grid></Window>using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace WpfRadGridViewCustomHierarchyDynamicColumns{ /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { Random gen = new Random(); DataTable dtTopLevel = new DataTable(); // Define the top level columns dtTopLevel.Columns.Add("KnownCol", typeof(string)); // Generate dynamic column names for top level List<string> DynamicColumns = new List<string>(); int intColCount = gen.Next(1, 6); for (int i = 0; i < intColCount; i++) { DynamicColumns.Add("Col" + i); } // Add those dynamic columns to the top level foreach (string strItem in DynamicColumns) { dtTopLevel.Columns.Add(strItem, typeof(string)); } // DataTable for child template dtTopLevel.Columns.Add("LowerLevel", typeof(DataTable)); string[] RowDataForKnownColumn = new string[] { "1st", "2nd", "3rd", "4th", "5th", "6th" }; foreach (string item in RowDataForKnownColumn) { // Add cell value for known column var aryStart = new object[] { item }; // Generate dynamic columns cell values List<string> listCellValuesForRow = new List<string>(); foreach (string strColumnName in DynamicColumns) { listCellValuesForRow.Add("Val" + item + "," + strColumnName); } // Data for Child Template DataTable dtLowerLevel = new DataTable(); // Define the columns for the lower level data for each row foreach (string strColumnName in DynamicColumns) { dtLowerLevel.Columns.Add(strColumnName, typeof(string)); } // Then generate and add the cell data for the lower level table for (int i = 0; i < gen.Next(1, RowDataForKnownColumn.Length); i++) // generate a random number of rows for the lower { List<string> listLowerLevelCellValues = new List<string>(); foreach (string strColumnName in DynamicColumns) { // Generate the cell contents for the the row in the lower table listLowerLevelCellValues.Add("LowerVal " + RowDataForKnownColumn[i] + "," + strColumnName); } // Add the cell values for the current row in the lower table dtLowerLevel.Rows.Add(listLowerLevelCellValues.ToArray()); } // End data for child template // Include the cell values for the dynamic columns for this row var aryMiddle = listCellValuesForRow.ToArray(); // Include the the data table value which contains the row values for the lower level var aryEnd = new object[] { dtLowerLevel }; // Concatenate all the row values into a single array var aryRowValues = aryStart.Concat(aryMiddle).ToArray().Concat(aryEnd).ToArray(); // Add all the cell values for this row in the top level dtTopLevel.Rows.Add(aryRowValues); } DynamicGridUi.ItemsSource = dtTopLevel; } }}
