or
public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { this.ShutdownMode = System.Windows.ShutdownMode.OnLastWindowClose; // Init the application's main window... var mainWindow = new WindowWithTelerikDockingFromExample(); mainWindow.Title = "Main Window"; this.MainWindow = mainWindow; mainWindow.Show(); // init another instance of the window with the telerik docking, on a seperate UI thread... var thread = new Thread(() => { SynchronizationContext.SetSynchronizationContext(new DispatcherSynchronizationContext(Dispatcher.CurrentDispatcher)); var window2 = new WindowWithTelerikDockingFromExample(); window2.Title = "Window on seperate UI Thread..."; window2.Show(); System.Windows.Threading.Dispatcher.Run(); window2.Closed += (s2, e2) => { window2.Dispatcher.InvokeShutdown(); }; }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); base.OnStartup(e); } }<Window x:Class="TelerikDockingThreadIssueExample.WindowWithTelerikDockingFromExample" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" Title="Window with xaml copy and pasted from Telerik example" Height="300" Width="300"> <Grid> <telerik:RadDocking BorderThickness="0" Padding="0"> <telerik:RadDocking.DocumentHost> <telerik:RadSplitContainer> <telerik:RadPaneGroup> <telerik:RadDocumentPane Header="Document 1" Title="Document 1" /> </telerik:RadPaneGroup> </telerik:RadSplitContainer> </telerik:RadDocking.DocumentHost> <telerik:RadSplitContainer InitialPosition="DockedLeft"> <telerik:RadPaneGroup> <telerik:RadPane Header="Pane Left 1" IsPinned="False"> <TextBlock Text="Pane Left 1" /> </telerik:RadPane> <telerik:RadPane Header="Pane Left 2" IsPinned="False"> <TextBlock Text="Pane Left 2" /> </telerik:RadPane> <telerik:RadPane Header="Pane Left 3" IsPinned="False"> <TextBlock Text="Pane Left 3" /> </telerik:RadPane> <telerik:RadPane Header="Pane Left 4" IsPinned="False"> <TextBlock Text="Pane Left 4" /> </telerik:RadPane> </telerik:RadPaneGroup> </telerik:RadSplitContainer> <telerik:RadSplitContainer InitialPosition="DockedRight"> <telerik:RadPaneGroup> <telerik:RadPane Header="Pane Right 1" IsPinned="False"> <TextBlock Text="Pane Right 1" /> </telerik:RadPane> </telerik:RadPaneGroup> </telerik:RadSplitContainer> <telerik:RadSplitContainer InitialPosition="DockedBottom"> <telerik:RadPaneGroup> <telerik:RadPane Header="Pane Bottom 1" IsPinned="False"> <TextBlock Text="Pane Bottom 1" /> </telerik:RadPane> </telerik:RadPaneGroup> </telerik:RadSplitContainer> </telerik:RadDocking> </Grid></Window> 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; }