The items of the RadTreeView control do not behave correctly in a touch scenario when expanding/collapsing them.
A possible workaround for this behavior would be to set the TouchManager.ShouldSuspendMousePromotion attached property to True on the RadTreeView control instance.
When you reorder the collection very fast an exception is thrown. This is reproducible when the UI virtualization is enabled with its virtualization mode set to Recycling, and an item is selected. Also, you can observe some missing items glitches instead of the exception. To reproduce this you can call the ObservableCollection's Move() method several times in a single method (see the attached project). In this case also a NullReferenceException is thrown sometimes instead of the InvalidOperationException. To work this around delay the reordering calls so that the treeview has time to properly measure and arrange itself. For example: Items.Move(10, 2); Application.Current.Dispatcher.BeginInvoke(new Action(() => { Items.Move(10, 2); }), System.Windows.Threading.DispatcherPriority.Background);
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.
When expanding all items with a horizontal scrollbar the last item is hidden by the scrollbar. As a workaround, you can set the IsVirtualizing property of the RadTreeView to True.
Generated item cache is not cleared properly. This leads to memory leaking when items are virtualized and realized. As a workaround you can set the IsVisualCacheEnabled property of the TreeViewPanel to False. Note that this will work only in Recycling VirtualizationMode. <telerik:RadTreeView.ItemsPanel> <ItemsPanelTemplate> <telerik:TreeViewPanel IsVisualCacheEnabled="False" /> </ItemsPanelTemplate> </telerik:RadTreeView.ItemsPanel>
The vertical scroll cannot be moved via the mouse wheel or by clicking on the scrollbar's thumb after the End key is pressed. This is reproducible ONLY if the UI virtualization is enabled and if there are many items (500-1000+).
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.
RadTreeView with virtualization turned on, defines HierarchicalDataTemplates for its items.
In the template, the root panel is 32 pixels (or higher than the default TreeViewItemHeight - 24 px in OfficeBlackTheme). Scrolling the treeview, then maximizing the wpf window results in misplaced / incorrect height of treeviewitems.
Possible workaround:
Set the MinHeight property of RadTreeViewItem so that all its header content fits. Then set the item's VerticalContentAlignment to Stretch
<Style TargetType="telerik:RadTreeViewItem">
<Setter Property="MinHeight" Value="48" />
<Setter Property="VerticalContentAlignment" Value="Stretch" />
</Style>
Also following settings might help:
- setting fixed width/height of the RadTreeView
- setting ChildDefaultLength to 48 of every TreeviewPanel:
<telerik:RadTreeView.ItemsPanel>
<ItemsPanelTemplate>
<telerik:TreeViewPanel ChildDefaultLength="48" />
</ItemsPanelTemplate>
</telerik:RadTreeView.ItemsPanel>
<Style x:Key="ItemContainerStyle" TargetType="{x:Type telerik:RadTreeViewItem}">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<telerik:TreeViewPanel ChildDefaultLength="48" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
Expose properties that controls the lines color and their thickness like in the RadTreeListView.
TreeView Virtualization Mode is Recycling (the default one). In the ItemTemplate there is a RichTextBox with HtmlFormatProvider. Changing ItemsSource of the TreeView runtime produces null reference exception in TreeViewPanel.CleanupRange(). The Exception comes from the RecyclingItemContainerGenerator.Recycle method (http://msdn.microsoft.com/en-us/library/cc452208(v=vs.110).aspx). As a workaround if applicable, user can use the HierarchicalVirtualization mode: <telerik:RadTreeView telerik:TreeViewPanel.TreeVirtualizationMode="Hierarchical"
Use virtualization in hierarchical mode. Select a RadTreeViewItem that has parent. Move it somewhere in the source collection of the parent programmatically - reorder or sort. The item will remain in Museover State forever. Perform the same steps with Recycling mode, there might be missing RadtreeViewItems (not rendered at all) after the sort / reorder operation.
RadTreeView is virtualized and we use ItemContainerStyleSelector. The style selector select styles which set have ExpanderStyle property. The ExpanderStyle is not applied. There is an attached project which can be used as a possible workaround, Available in Official Release R3 2016. REOPEN: The bug will be re-opened from 5 Dec 2016 internal build as well as in the official R3 2017 release. We reverted the fix for this bug due to performance hit we found in R3 2016. The workaround suggested in the attached project is still valid.
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.
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.
When the TreeView's ScrollViewer is Visible, changing the tree's width to 0 them back to Auto breaks the scrolling function of the ScrollViewer. The workaround is to make the TreeView Collapsed before setting the Width to 0 and make it Visible before setting the Width back to Auto. Another workaround: Use visibility instead of Width=0.
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 and RadTreeViewItem ExpandAll() method sets the IsExpanded property to True to all items even if an Item has no children to display. This causes an issue when using the DefaultImageSrc and ExpandedImageSrc properties as the last-level items will be displayed with an ExpandedImageSrc as their IsExpanded property it set to True. However, as these items have no children, they should use the DefaultImageSrc.
Root level items ItemTemplate is incorrectly set after virtualization when using HierarchicalDataTemplate with ItemTemplateSelector. This causes the second level items to use incorrect data template.