internal static void OnVirtualizationPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ItemsControl ic = d as ItemsControl;

            if (ic != null)
            {
                Panel p = ic.ItemsHost;
                if (p != null)
                {
                    p.InvalidateMeasure();
                    ItemsPresenter itemsPresenter = VisualTreeHelper.GetParent(p) as ItemsPresenter;
                    if (itemsPresenter != null)
                    {
                        itemsPresenter.InvalidateMeasure();
                    }

                    if (d is TreeView)
                    {
                        DependencyProperty dp = e.Property;
                        if (dp == VirtualizingStackPanel.IsVirtualizingProperty ||
                            dp == VirtualizingPanel.IsVirtualizingWhenGroupingProperty ||
                            dp == VirtualizingStackPanel.VirtualizationModeProperty ||
                            dp == VirtualizingPanel.ScrollUnitProperty)
                        {
                            VirtualizationPropertyChangePropagationRecursive(ic, p);
                        }
                    }
                }
            }
        }