private void RadTreeListView_Filtering(object sender, Telerik.Windows.Controls.GridView.GridViewFilteringEventArgs e)
{
var treeListView = sender as RadTreeListView;
var internalColumns = treeListView.GetType().GetProperty("InternalColumns", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(treeListView);
internalColumns.GetType().GetProperty("ColumnWidthsCalculationPending", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(internalColumns, true);
}
private void RadTreeListView_Filtered(object sender, Telerik.Windows.Controls.GridView.GridViewFilteredEventArgs e)
{
Dispatcher.BeginInvoke(new Action(() =>
{
var treeListView = sender as RadTreeListView;
var internalColumns = treeListView.GetType().GetProperty("InternalColumns", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(treeListView);
internalColumns.GetType().GetProperty("ColumnWidthsCalculationPending", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(internalColumns, false);
}), System.Windows.Threading.DispatcherPriority.Loaded);
}
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;
}
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.
I am using a RadTreeListView with MaterialDesign theme in a Windows WPF application. By default the selected cell is indicated by a grey line at the bottom of the cell. I don't want an indication for the selected cell and used the advise from forum to change the style as follows:
<Style TargetType="telerik:GridViewCell" BasedOn="{StaticResource GridViewCellStyle}">
<Setter Property="CurrentBorderBrush" Value="Transparent"/>
</Style>
This works fine.
But if changing the Windows application with Alt+Tab and then back to my application with Alt+Tab the cell selection (grey underline) is displayed.
Per the thread at "http://www.telerik.com/forums/isexpandablebinding-requires-user-interaction-with-control-to-take-effect" I have modified the IsExpandedRowBinding sample to recreate the problem. I modified the button to expand and collapse the first row. To reproduce the problem: 1. Expand the first row. 2. Scroll down so the first row is not visible but it's children are visible. 3. Press the button. The expected behavior is the first row should collapse but nothing happens. 4. Scroll up so the first row is visible. The first row collapses.
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).
The selected rows of TreeListView are not returned when calling SelectionPattern.GetSelection method.
The problem can be reproduced with RadGridView as well.