File: src\Framework\System\Windows\Controls\Primitives\IHierarchicalVirtualizationAndScrollInfo.cs
Project: wpf\PresentationFramework.csproj (PresentationFramework)
//---------------------------------------------------------------------------
//
// <copyright file="IHierarchicalVirtualizationAndScrollInfo.cs" company="Microsoft">
//    Copyright (C) Microsoft Corporation.  All rights reserved.
// </copyright>
//
// Description: IHierarchicalVirtualizationAndScrollInfo interface
//
//
//---------------------------------------------------------------------------
 
using System;
 
namespace System.Windows.Controls.Primitives
{
    /// <summary>
    ///     Interface through which a VirtualizingPanel communicates with the 
    ///     element being virtualized (such as TreeViewItem or GroupItem). 
    ///     This is used for hierarchial virtualization where an element may contain a Header
    ///     and and an ItemsHost to layout its child elements.
    /// </summary>
    public interface IHierarchicalVirtualizationAndScrollInfo 
    {
        /// <summary>
        /// Returns the constraints for the control.
        /// Constraints include viewport rect, cache before and 
        /// after the viewport, cache unit.
        /// </summary>
        HierarchicalVirtualizationConstraints Constraints { get; set; }
 
        /// <summary>
        /// Returns desired size (pixel and logical) of the header element.
        /// </summary>
        HierarchicalVirtualizationHeaderDesiredSizes HeaderDesiredSizes { get; }
 
        /// <summary>
        /// Returns desired size of the items.
        /// </summary>
        HierarchicalVirtualizationItemDesiredSizes ItemDesiredSizes { get; set; }
 
        /// <summary>
        /// Return the panel that is the ItemsHost for this control.
        /// </summary>
        Panel ItemsHost { get; }
 
        /// <summary>
        /// This describes if the neighboring panels must disable virtualization.
        /// </summary>
        bool MustDisableVirtualization { get; set; }
 
        /// <summary>
        /// This property describes if this is the background layout pass 
        /// typically meant to generate containers for the cache regions.
        /// </summary>
        bool InBackgroundLayout { get; set; }
    }
}