Issue with RadTreeViewItemStyle when Virtualizing is "on"

1 posts, 0 answers
  1. Art
    Art avatar
    23 posts
    Member since:
    Apr 2015

    Posted 30 Aug Link to this post

    Search ViewModel change binded ItemsSource [ViewModel.Items = new ObservableCollection <DataItemViewModel> ();] and replaces it with a hierarchical result every time a user changes the query string in the TextBox.

    When Virtualizing is "on" and there is a custom RadTreeViewItemStyle (+ IsExpanded on all hierarchy items)

    <t:RadTreeView.Resources>
        <Style TargetType="t:RadTreeViewItem" x:Key="DefaultTreeViewItemStyle">
            <Setter Property="FontWeight" Value="Normal" />
            <Setter Property="FontStyle" Value="Normal" />
     
            <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
        </Style>
        <Style TargetType="t:RadTreeViewItem" BasedOn="{StaticResource DefaultTreeViewItemStyle}" />
    </t:RadTreeView.Resources>

    Exception: InvalidOperationException
    Message : A VirtualizingPanel is not nested in an ItemsControl. VirtualizingPanel must be nested in ItemsControl to get and show items.

    But I can solve it by using custom ItemContainerStyleSelector with

    private static Style CloneStyle(Style sourceStyle)
    {
        if (sourceStyle == null)
            return null;
     
        var clonnedStyle = new Style(sourceStyle.TargetType)
        {
            BasedOn = sourceStyle.BasedOn
        };
     
        foreach (var setterBase in sourceStyle.Setters)
        {
            var setter = setterBase as Setter;
     
            if (setter == null)
                continue;
     
            clonnedStyle.Setters.Add(new Setter
            {
                Property = setter.Property,
                Value = setter.Value
            });
        }
     
        return clonnedStyle;
    }

     

    Microsoft Silverlight (64-bit) Version: 5.1.41105.0

    Windows 8.1 (64-bit)

    Internet Explorer 11.0.9600.17416

    Telerik 2016.2.503.1050

     

Back to Top