File: src\Framework\System\Windows\Controls\Primitives\IContainItemStorage.cs
Project: wpf\PresentationFramework.csproj (PresentationFramework)
//---------------------------------------------------------------------------
//
// <copyright file="IContainItemStorage.cs" company="Microsoft">
//    Copyright (C) Microsoft Corporation.  All rights reserved.
// </copyright>
//
// Description: IContainItemStorage interface
//
//
//---------------------------------------------------------------------------
 
using System;
 
namespace System.Windows.Controls.Primitives
{
    /// <summary>
    ///     Interface through which a layout panel (such as a VirtualizingPanel) communicates
    ///     with a host to store and retrieve values of a DependencyProperty of a container being virtualized.
    ///     
    /// </summary>
    public interface IContainItemStorage 
    {
        /// <summary>
        /// Stores the given value in ItemValueStorage, associating it with the given item and DependencyProperty.
        /// </summary>
        /// <param name="item"></param>
        /// <param name="dp">DependencyProperty</param>
        /// <param name="value"></param>
        void StoreItemValue(object item, DependencyProperty dp, object value);
 
        /// <summary>
        /// Returns the value storaed gainst the given DependencyProperty and item.
        /// </summary>
        /// <param name="item"></param>
        /// <param name="dp"></param>
        /// <returns></returns>
        object ReadItemValue(object item, DependencyProperty dp);
 
        /// <summary>
        /// Clears the value in ItemValueStorage, associating it with the given item and DependencyProperty.
        /// </summary>
        /// <param name="item"></param>
        /// <param name="dp">DependencyProperty</param>
        void ClearItemValue(object item, DependencyProperty dp);
        
        /// <summary>
        /// Clears the given DependencyProperty starting at the current element including all nested storage bags.
        /// </summary>
        /// <param name="dp">DependencyProperty</param>
        void ClearValue(DependencyProperty dp);
 
        /// <summary>
        /// Clears the item storage on the current element entirely.
        /// </summary>
        void Clear();
    }
}