RadPanelBar
for Silverlight.I have created a resource in the
UserControl.Resources
and referred to it through
ItemTemplate
of RadPanelBar
.The data source for the RadPanelBar is
BindingProperties.SelectedTemplate.Charts
. I am unable to generate the content of the RadPanelBarItem. What ever I do I either get the content in the header of the item or will not get any content generated.BindingProperties.SelectedTemplate
is an entity and Charts
is a list of objects.Am I missing any bindings here.
<
UserControl.Resources
>
<
telerik:HierarchicalDataTemplate
x:Key
=
"ChartDetailView"
>
<
StackPanel
Orientation
=
"Horizontal"
Grid.ColumnSpan
=
"2"
>
<
Button
Width
=
"25"
Height
=
"25"
Margin
=
"10,0,0,0"
>
<
Image
Source
=
"Resources/DeleteRed.png"
HorizontalAlignment
=
"Stretch"
VerticalAlignment
=
"Top"
/>
</
Button
>
<
Views:ChartConfigView
VerticalAlignment
=
"Top"
Grid.ColumnSpan
=
"2"
/>
</
StackPanel
>
</
telerik:HierarchicalDataTemplate
>
<
telerik:HierarchicalDataTemplate
x:Key
=
"ChartView"
ItemsSource
=
"{Binding}"
ItemTemplate
=
"{StaticResource ChartDetailView}"
>
<
TextBlock
Text
=
"{Binding Path=ChartTitle}"
Margin
=
"5 3"
/>
</
telerik:HierarchicalDataTemplate
>
</
UserControl.Resources
>
<
telerik:RadPanelBar
telerik:StyleManager.Theme
=
"Vista"
ItemsSource
=
"{Binding Path=BindingProperties.SelectedTemplate.Charts}"
ItemTemplate
=
"{ StaticResource ChartView}"
></
telerik:RadPanelBar
>
5 Answers, 1 is accepted
From the code snippet I am unable to determine what exactly the issue is. Could you please send us a sample project which reproduces the problem. This way we will be better able to assist you.
All the best,
Kiril Stanoev
the Telerik team
Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!

My object structure is as below.
//Parent Type
public class Chart
{
public string ChartTitle { get; set; }
public List<
ChartSeries
> Series { get; set; }
public List<
ChartZone
> Zones { get; set; }
}
//Child Type 1
public class ChartSeries
{
public string SeriesName { get; set; }
public string SeriesColor { get; set; }
}
//Child Type 2
public class ChartZone
{
public string ZoneName { get; set; }
public string Color { get; set; }
}
My XAML has the below code.
<
StackPanel
Orientation
=
"Vertical"
Grid.Row
=
"18"
Grid.ColumnSpan
=
"2"
HorizontalAlignment
=
"Stretch"
VerticalAlignment
=
"Top"
Margin
=
"0,10,10,0"
>
<!--Chart Series Configuratin Section Start-->
<
telerik:RadPanelBar
ItemsSource
=
"{Binding Path=Series}"
DataContext
=
"{Binding}"
telerik:StyleManager.Theme
=
"Vista"
>
<
telerik:RadPanelBar.Resources
>
<
DataTemplate
x:Key
=
"seriesTemplate"
>
<
Views:SeriesView
DataContext
=
"{Binding}"
VerticalAlignment
=
"Top"
Grid.ColumnSpan
=
"2"
/>
</
DataTemplate
>
</
telerik:RadPanelBar.Resources
>
<
telerik:RadPanelBar.ItemTemplate
>
<
telerik:HierarchicalDataTemplate
ItemsSource
=
"{Binding Converter={StaticResource collectionConverter}}"
ItemTemplate
=
"{StaticResource seriesTemplate}"
>
<
TextBlock
Text
=
"{Binding Path=SeriesName, Mode=TwoWay}"
Margin
=
"5 3"
/>
</
telerik:HierarchicalDataTemplate
>
</
telerik:RadPanelBar.ItemTemplate
>
</
telerik:RadPanelBar
>
<!--Chart Series Configuration Section End-->
</
StackPanel
>
<
StackPanel
Orientation
=
"Vertical"
Grid.Row
=
"19"
Grid.ColumnSpan
=
"2"
HorizontalAlignment
=
"Stretch"
VerticalAlignment
=
"Top"
Margin
=
"0,10,10,0"
>
<!--Chart Zone Configuratin Section Start-->
<
telerik:RadPanelBar
ItemsSource
=
"{Binding Path=Zones}"
DataContext
=
"{Binding}"
telerik:StyleManager.Theme
=
"Vista"
>
<
telerik:RadPanelBar.Resources
>
<
DataTemplate
x:Key
=
"zoneTemplate"
>
<
Views:ZoneView
DataContext
=
"{Binding}"
VerticalAlignment
=
"Top"
Grid.ColumnSpan
=
"2"
/>
</
DataTemplate
>
</
telerik:RadPanelBar.Resources
>
<
telerik:RadPanelBar.ItemTemplate
>
<
telerik:HierarchicalDataTemplate
ItemsSource
=
"{Binding Converter={StaticResource collectionConverter}}"
ItemTemplate
=
"{StaticResource zoneTemplate}"
>
<
TextBlock
Text
=
"{Binding Path=ZoneName, Mode=TwoWay}"
Margin
=
"5 3"
/>
</
telerik:HierarchicalDataTemplate
>
</
telerik:RadPanelBar.ItemTemplate
>
</
telerik:RadPanelBar
>
<!--Chart Zone Configuration Section End-->
</
StackPanel
>
Without the collectionConverter, It would render the RadPanelBar section headers but would not generate the content of the RadPanelBarItem. Is there any other way to generate the desired output without using the converter. Is there any other control which would generate the similar output. My CollectionConverter is as shown below.
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (typeof(Chart) == value.GetType())
{
return new ObservableCollection<
Chart
> { (Chart)value };
}
if (typeof(ChartSeries) == value.GetType())
{
return new ObservableCollection<
ChartSeries
> { (ChartSeries)value };
}
if (typeof(ChartZone) == value.GetType())
{
return new ObservableCollection<
ChartZone
> { (ChartZone)value };
}
return new ObservableCollection<
object
>();
}
Could you please show us how your Converter works and what returns? In WPF Databinding in XAML is very powerful technique and probably this could be achieved only in XAML.
Regards,Petar Mladenov
the Telerik team
Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!

I think that in your case the only way to achieve the desired functionality is to use this converter. This is because the PanelBarItem is HeaderedItemsControl which means that it can display information only in its header and the only content it can have are other PanelBarItems. You should use this converter because the ItemsSource property of the HierarchicalDataTemplate accepts only collections and when you convert your business item to a collection with one item the PanelBarItem generates a child PanelBarItem for this business object and you can show your data in it.
I looked through your code and created a sample application so could you examine it and if this is not your desired behavior please feel free to tell us what you don't like.
Best wishes,
Zarko
the Telerik team
Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!