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).
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.
Asynchronous mode for ExpandAllHierarchyItems()
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.
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.
By default the AutoExpandItemsAfterFilter property of RadTreeListView is set to True, which means that when you filter the data, the parents of all found child items will be expanded automatically. However, if you call the CollapseAllHierarchyItems method this functionality stops working.
To work this around, you can reset the ItemsSource property instead of using the CollapseAllHierarchyItems.
this
.RadTreeListView.SelectedCells.Clear();