Modify the SelectionChanged event logic so that the event is only fired once - exposing both the RemovedItems and AddedItems collections.
Ability to validate if there are selected,checked, expanded items, if a node has items
Support DragCue and vertical PreviewDropLine when TreeView renders its items horizontally
This will solve scenarios in which user wants to add new items somewhere (inner level, outside the ViewPort ) in virtualized treeview and then wants to begin edit these items (or focus them , select them). There is currently no mechanism to detect when the new items are ready (measured / completely generated), ItemsPrepared for example passes before the OnApplyTemplate of the RadTreeViewItem.
RadTreeView is virtualized and SelectionMode is set to "Extended". All ViewModels are selected and IsSelected of TreeViewitems is 2-way bound to IsSelected in the ViewModels. When clicking a TreeViewitem with Mouse, all other items are deselected. However, when scrolling we see that items are being prepared are not deselected - they are still selected. This is due to a Limitation of the Virtualization mechanism - it does not know about the existance of the ViewModels and does not work with them. Virtualization works only with the Containers - the RadTreeViewItem.
Expose IsDropBeforeAllowed, IsDropAfterAllowed and IsDropInsideAllowed properties in order to facilitate the implementation of complicated drag/drop scenarios in MVVM scenarios. Update: The suggested approach would be to use an attached behavior for DragDropManager.DragOverEvent in order to change the default TreeView behavior. DropAction property of a TreeViewDragDropOptions instance could be used to customize the drop operation. Also, the DropPosition property of the TreeViewDragDropOptions instance could be used to check current drop case. An instace of TreeViewDragDropOptions could be retreived from DragOverEvent event arguments.
Change the SelectedValue implementation to allow a TwoWay binding
Currently, in Extended SelectionMode, RadTreeView selects multiple Items with Shift + Click selection only if there is another RadTreeViewItem already selected with mouse. Other controls like RadListBox, RadGridView hold reference to the business object which should be the start (the target) of the multiselection. RadTreeView holds such reference with weak reference to the container (RadTreeViewItem) and only if this container is selected with Mouse. Adding such method (SetSelectionAnchor) in RadTreeView will help users better control the multiselection process.
The built-in drag drop mechanism works with the containers of the items and makes a snapshot of them for the DragVisual. Thus, dragging multiple selected items that are not present in the viewport is not possible.
ExpandAll() is a UI operation which blocks the UI thread.
Collapse a RadTreeViewItem when all its children are dragged elsewhere. This is needed in scenarios where the RadTreeViewItem DefaultImageSrc and ExpandedImageSrc properties are set, and you want to revert back to the DefaultImageSrc once all children of the item are dragged to other positions.
Provide support for HierarchyId data type.
Like in Windows, ability to select multiple items with rectangle created with mouse
BringIntoView and GetItemByPath are slow on trees with many nested levels (20-30). In Q2 2014 these methods will be faster in scenarios with TreeView Lines.
Expose properties that controls the lines color and their thickness like in the RadTreeListView.