/// <summary>Returns a value that indicates whether the specified object is equal to this <see cref="T:System.Windows.Controls.HierarchicalVirtualizationItemDesiredSizes" /> object.</summary>
 /// <param name="oCompare">The object to compare to this object.</param>
 /// <returns>
 ///     <see langword="true" /> if the specified object is equal to this <see cref="T:System.Windows.Controls.HierarchicalVirtualizationItemDesiredSizes" /> object; otherwise, <see langword="false" />.</returns>
 // Token: 0x06005430 RID: 21552 RVA: 0x00175124 File Offset: 0x00173324
 public override bool Equals(object oCompare)
 {
     if (oCompare is HierarchicalVirtualizationItemDesiredSizes)
     {
         HierarchicalVirtualizationItemDesiredSizes itemDesiredSizes = (HierarchicalVirtualizationItemDesiredSizes)oCompare;
         return(this == itemDesiredSizes);
     }
     return(false);
 }
 /// <summary>Returns a value that indicates whether the specified <see cref="T:System.Windows.Controls.HierarchicalVirtualizationItemDesiredSizes" /> object is equal to this <see cref="T:System.Windows.Controls.HierarchicalVirtualizationItemDesiredSizes" /> object.</summary>
 /// <param name="comparisonItemSizes">The object to compare to this object.</param>
 /// <returns>
 ///     <see langword="true" /> if the specified object is equal to this <see cref="T:System.Windows.Controls.HierarchicalVirtualizationItemDesiredSizes" /> object; otherwise, <see langword="false" />.</returns>
 // Token: 0x06005431 RID: 21553 RVA: 0x0017514E File Offset: 0x0017334E
 public bool Equals(HierarchicalVirtualizationItemDesiredSizes comparisonItemSizes)
 {
     return(this == comparisonItemSizes);
 }
Example #3
0
        private void UpdateExtent(bool areItemChangesLocal)
        {
            bool isHorizontal = (Orientation == Orientation.Horizontal);

            ItemsControl itemsControl;
            GroupItem groupItem;
            IContainItemStorage itemStorageProvider;
            IHierarchicalVirtualizationAndScrollInfo virtualizationInfoProvider;
            object parentItem;
            bool mustDisableVirtualization;

            GetOwners(false /*shouldSetVirtualizationState*/, isHorizontal,
                out itemsControl, out groupItem, out itemStorageProvider,
                out virtualizationInfoProvider, out parentItem, out mustDisableVirtualization);

            double uniformOrAverageContainerSize = GetUniformOrAverageContainerSize(itemStorageProvider, parentItem);
            bool areContainersUniformlySized = GetAreContainersUniformlySized(itemStorageProvider, parentItem);

            IList children = RealizedChildren;
            IItemContainerGenerator generator = Generator;
            IList items = ((ItemContainerGenerator)generator).ItemsInternal;
            int itemCount = items.Count;

            if (!areItemChangesLocal)
            {
                //
                // If the actual item changes arent local to this panel then we need to [....]
                // the flags for this panel to make sure we gather size updates from
                // descendent panel that actually contained the collection changes.
                //
                double computedUniformOrAverageContainerSize = uniformOrAverageContainerSize;
                bool computedAreContainersUniformlySized = areContainersUniformlySized;

                SyncUniformSizeFlags(
                    parentItem,
                    children,
                    items,
                    itemStorageProvider,
                    itemCount,
                    computedAreContainersUniformlySized,
                    computedUniformOrAverageContainerSize,
                    ref areContainersUniformlySized,
                    ref uniformOrAverageContainerSize,
                    isHorizontal,
                    true /* evaluateAreContainersUniformlySized */);
            }

            double distance = 0;
            ComputeDistance(items, itemStorageProvider, isHorizontal,
                areContainersUniformlySized,
                uniformOrAverageContainerSize,
                0, items.Count, out distance);

            if (IsScrolling)
            {
                if (isHorizontal)
                {
                    _scrollData._extent.Width = distance;
                }
                else
                {
                    _scrollData._extent.Height = distance;
                }

                ScrollOwner.InvalidateScrollInfo();
            }
            else if (virtualizationInfoProvider != null)
            {
                HierarchicalVirtualizationItemDesiredSizes itemDesiredSizes = virtualizationInfoProvider.ItemDesiredSizes;

                if (IsPixelBased)
                {
                    Size pixelSize = itemDesiredSizes.PixelSize;
                    if (isHorizontal)
                    {
                        pixelSize.Width = distance;
                    }
                    else
                    {
                        pixelSize.Height = distance;
                    }

                    itemDesiredSizes = new HierarchicalVirtualizationItemDesiredSizes(
                        itemDesiredSizes.LogicalSize,
                        itemDesiredSizes.LogicalSizeInViewport,
                        itemDesiredSizes.LogicalSizeBeforeViewport,
                        itemDesiredSizes.LogicalSizeAfterViewport,
                        pixelSize,
                        itemDesiredSizes.PixelSizeInViewport,
                        itemDesiredSizes.PixelSizeBeforeViewport,
                        itemDesiredSizes.PixelSizeAfterViewport);
                }
                else
                {
                    Size logicalSize = itemDesiredSizes.LogicalSize;
                    if (isHorizontal)
                    {
                        logicalSize.Width = distance;
                    }
                    else
                    {
                        logicalSize.Height = distance;
                    }

                    itemDesiredSizes = new HierarchicalVirtualizationItemDesiredSizes(
                        logicalSize,
                        itemDesiredSizes.LogicalSizeInViewport,
                        itemDesiredSizes.LogicalSizeBeforeViewport,
                        itemDesiredSizes.LogicalSizeAfterViewport,
                        itemDesiredSizes.PixelSize,
                        itemDesiredSizes.PixelSizeInViewport,
                        itemDesiredSizes.PixelSizeBeforeViewport,
                        itemDesiredSizes.PixelSizeAfterViewport);
                }

                virtualizationInfoProvider.ItemDesiredSizes = itemDesiredSizes;
            }
        }