There are few approaches you can take to remove the arrow if an item does not have children.
The first one is to have 2 Styles for a RadPanelBarItem. The first Style will have the arrow and the second will not. With an ItemContainerStyleSelector you can choose the appropriate Style to apply based on whether the item has children. This link
explains how to use ItemContainerStyleSelector in RadTreeView, but the approach is the same with RadPanelBar.
The second approach is to find the arrow programatically and set its visibility in code behind:
sender, RoutedEventArgs e)
// Get the PanelBarItem container
RadPanelBarItem container =
// Get the first child in the container's ControlTemplate
var root = VisualTreeHelper.GetChild(container, 0)
// Find an element with name arrow
var arrow = root.FindName(
// Hide/Show it based on whether the PanelBarItem container has children or not
arrow.Visibility = container.Items.Count > 0 ? Visibility.Visible : Visibility.Collapsed;
The attached project demonstrates approach #2.
As for your second question, initially if you have a hierarchical data you will have to convert it to flat data and give it to the ListBox. On the other hand, initially if you have flat data, you can give it to the ListBox, but you will have to convert it to hierarchical data in order to give it to PanelBar. This article explains how to transform flat data to hierarchical data
All the best,
the Telerik team
Do you want to have your say when we set our development plans?
Do you want to know when a feature you care about is added or when a bug fixed?
Telerik Public Issue Tracking
system and vote to affect the priority of the items