There are large number of items for the TreeList (for example 3000) and you have all them initially collapsed. For example you could modify the IsExpandedBinding demo to have 3000 items. Then scroll down so the row with Drinks and Count = 2194 is at the top of the control and expand it. The result is that both that row and the row with Drinks and Count = 2199 expand.
If you move an item from one level to another into the tree, the indent of the corresponding row won't get updated. This is reproducible only if the new parent of the moved item is expanded, while the operation is executed. Usually, this can be reproduced by calling the ExpandHierarchyItem() for the new parent item method just after the moving of the original item. To resolve this you can delay the expanding of the item. Note that the expanding is executed manually by calling the ExpandHierarchyItem() method. So, you can use a dispatcher with a lower DispatcherPriority to delay this. Or alternatively, you can collapse the item before expanding it (using the CollapseHierarchyItem() method).
TreeListView root note collapses after scrolling.
TreeListView is trying to expand its item which is empty.
As a workaround you can try executing the selection in a Dispatcher with DispatcherPriority.Render. This may not apply in the case when there are many nodes outside the View area.
An exception is thrown when you try to update the items source of RadTreeListView in an async method.
The following error is observed.
InvalidOperationException: The calling thread cannot access this object because a different thread owns it
To work this around ensure that only the main UI thread updates the item source.
If you press Ctrl+Up/Down to change the selection and currency in TreeListView, the CurrentCellChanged event is fired. However, the e.NewCell property of the event arguments is null.
To get the new cell, use the CurrentCellInfo property of RadTreeListView.
private void RadTreeListView_CurrentCellChanged(object sender, GridViewCurrentCellChangedEventArgs e)
{
var treeListView = (RadTreeListView)sender;
GridViewCellInfo currentCell = treeListView.CurrentCellInfo;
}
Asynchronous mode for ExpandAllHierarchyItems()
Currently, the DataFormatString property of the columns is applied only to the top-level rows and not to the child ones.
To work this around, create a new DataTemplate for the CellTemplate property of the column and set the StringFormat property of the Binding instance for the element that will be used to display the cell's value in view mode.
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding MyPropertyValue, StringFormat=N2}"/>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
The goal is to expand a second node each time you expand a particular node from the RadTreeListView. The data of the second node is loaded on demand, but it is not shown when the node itself is expanded.
Currently, the RadTreeListView control does not fully support the merged cells functionality due to the different levels of the hierarchy of the items displayed by the control.